Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15813
Modified Files:
Tag: devel_0_38
g_rtext.c
Log Message:
added checks for NULL-pointers
Index: g_rtext.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_rtext.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** g_rtext.c 6 Sep 2004 20:20:34 -0000 1.4
--- g_rtext.c 21 Jun 2005 13:38:26 -0000 1.4.4.1
***************
*** 7,10 ****
--- 7,12 ----
/* all changes are labeled with iemlib */
+ /* IOhannes m zmölnig (20050621): added checks for NULL-pointers */
+
#include <stdlib.h>
#include <string.h>
***************
*** 44,60 ****
t_rtext *rtext_new(t_glist *glist, t_text *who)
{
! t_rtext *x = (t_rtext *)getbytes(sizeof *x);
! int w = 0, h = 0, indx;
! x->x_height = -1;
! x->x_text = who;
! x->x_glist = glist;
! x->x_next = glist->gl_editor->e_rtext;
! x->x_selstart = x->x_selend = x->x_active =
x->x_drawnwidth = x->x_drawnheight = 0;
! binbuf_gettext(who->te_binbuf, &x->x_buf, &x->x_bufsize);
! glist->gl_editor->e_rtext = x;
! sprintf(x->x_tag, ".x%lx.t%lx", (t_int)glist_getcanvas(x->x_glist),
! (t_int)x);
! return (x);
}
--- 46,66 ----
t_rtext *rtext_new(t_glist *glist, t_text *who)
{
! if(glist && glist->gl_editor && who)
! {
! t_rtext *x = (t_rtext *)getbytes(sizeof *x);
! int w = 0, h = 0, indx;
! x->x_height = -1;
! x->x_text = who;
! x->x_glist = glist;
! x->x_next = glist->gl_editor->e_rtext;
! x->x_selstart = x->x_selend = x->x_active =
x->x_drawnwidth = x->x_drawnheight = 0;
! binbuf_gettext(who->te_binbuf, &x->x_buf, &x->x_bufsize);
! glist->gl_editor->e_rtext = x;
! sprintf(x->x_tag, ".x%lx.t%lx", (t_int)glist_getcanvas(x->x_glist),
! (t_int)x);
! return (x);
! } else
! return 0;
}
***************
*** 63,78 ****
void rtext_free(t_rtext *x)
{
! if (x->x_glist->gl_editor->e_textedfor == x)
x->x_glist->gl_editor->e_textedfor = 0;
! if (x->x_glist->gl_editor->e_rtext == x)
x->x_glist->gl_editor->e_rtext = x->x_next;
! else
! {
! t_rtext *e2;
! for (e2 = x->x_glist->gl_editor->e_rtext; e2; e2 = e2->x_next)
! if (e2->x_next == x)
{
! e2->x_next = x->x_next;
! break;
}
}
--- 69,87 ----
void rtext_free(t_rtext *x)
{
! if(x){
! if(x->x_glist && x->x_glist->gl_editor){
! if (x->x_glist->gl_editor->e_textedfor == x)
x->x_glist->gl_editor->e_textedfor = 0;
! if (x->x_glist->gl_editor->e_rtext == x)
x->x_glist->gl_editor->e_rtext = x->x_next;
! else
{
! t_rtext *e2;
! for (e2 = x->x_glist->gl_editor->e_rtext; e2; e2 = e2->x_next)
! if (e2->x_next == x)
! {
! e2->x_next = x->x_next;
! break;
! }
}
}
***************
*** 80,100 ****
--- 89,123 ----
freebytes(x->x_buf, x->x_bufsize);
freebytes(x, sizeof *x);
+ }
}
char *rtext_gettag(t_rtext *x)
{
+ if(x)
return (x->x_tag);
+ else
+ return 0;
}
void rtext_gettext(t_rtext *x, char **buf, int *bufsize)
{
+ if(x){
*buf = x->x_buf;
*bufsize = x->x_bufsize;
+ } else {
+ *buf = 0;
+ *bufsize = 0;
+ }
}
void rtext_getseltext(t_rtext *x, char **buf, int *bufsize)
{
+ if(x){
*buf = x->x_buf + x->x_selstart;
*bufsize = x->x_selend - x->x_selstart;
+ } else {
+ *buf = 0;
+ *bufsize = 0;
+ }
}
***************
*** 103,106 ****
--- 126,130 ----
static int firstone(char *s, int c, int n)
{
+ if(s) {
char *s2 = s + n;
int i = 0;
***************
*** 111,114 ****
--- 135,139 ----
s++;
}
+ }
return (-1);
}
***************
*** 116,119 ****
--- 141,145 ----
static int lastone(char *s, int c, int n)
{
+ if(s){
char *s2 = s + n;
while (s2 != s)
***************
*** 123,126 ****
--- 149,153 ----
if (*s2 == c) return (n);
}
+ }
return (-1);
}
***************
*** 151,154 ****
--- 178,182 ----
int *indexp)
{
+ if(x && heightp && indexp) {
float dispx, dispy;
char smallbuf[200], *tempbuf;
***************
*** 270,277 ****
--- 298,307 ----
if (tempbuf != smallbuf)
t_freebytes(tempbuf, 2 * x->x_bufsize + 1);
+ }
}
void rtext_retext(t_rtext *x)
{
+ if(x){
int w = 0, h = 0, indx;
t_text *text = x->x_text;
***************
*** 325,328 ****
--- 355,359 ----
}
rtext_senditup(x, SEND_UPDATE, &w, &h, &indx);
+ }
}
***************
*** 330,337 ****
--- 361,371 ----
t_rtext *glist_findrtext(t_glist *gl, t_text *who)
{
+ if(gl && gl->gl_editor){
t_rtext *x = gl->gl_editor->e_rtext;
while (x && x->x_text != who) x = x->x_next;
if (!x) bug("glist_findrtext");
return (x);
+ } else
+ return 0;
}
***************
*** 358,361 ****
--- 392,396 ----
void rtext_erase(t_rtext *x)
{
+ if(x)
sys_vgui(".x%lx.c delete %s\n", glist_getcanvas(x->x_glist), x->x_tag);
}
***************
*** 363,366 ****
--- 398,402 ----
void rtext_displace(t_rtext *x, int dx, int dy)
{
+ if(x)
sys_vgui(".x%lx.c move %s %d %d\n", glist_getcanvas(x->x_glist),
x->x_tag, dx, dy);
***************
*** 369,372 ****
--- 405,409 ----
void rtext_select(t_rtext *x, int state)
{
+ if(x){
t_glist *glist = x->x_glist;
t_canvas *canvas = glist_getcanvas(glist);
***************
*** 374,381 ****
--- 411,420 ----
x->x_tag, (state? "blue" : "black"));
canvas_editing = canvas;
+ }
}
void rtext_activate(t_rtext *x, int state)
{
+ if(x){
int w = 0, h = 0, indx;
t_glist *glist = x->x_glist;
***************
*** 399,402 ****
--- 438,442 ----
}
rtext_senditup(x, SEND_UPDATE, &w, &h, &indx);
+ }
}
***************
*** 405,408 ****
--- 445,451 ----
int w = 0, h = 0, indx, i, newsize, ndel;
char *s1, *s2;
+
+ if(!x)return;
+
if (keynum)
{
***************
*** 484,487 ****
--- 527,533 ----
{
int w = xval, h = yval, indx;
+
+ if(!x)return;
+
rtext_senditup(x, SEND_CHECK, &w, &h, &indx);
if (flag == RTEXT_DOWN)