From b4800800242cc3fe81e567180a1a4094f78b3495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Thu, 6 Sep 2007 08:31:08 +0000 Subject: fixed crasher bug when replacing an sublist in an empty msgbox svn path=/trunk/externals/zexy/; revision=8707 --- src/msgfile.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'src/msgfile.c') diff --git a/src/msgfile.c b/src/msgfile.c index 9cb209c..7a2b2fb 100644 --- a/src/msgfile.c +++ b/src/msgfile.c @@ -63,7 +63,6 @@ typedef struct _msgfile int mode; - t_msglist *current; /* pointer to our list */ t_symbol *x_dir; @@ -118,14 +117,16 @@ static void delete_currentnode(t_msgfile *x) t_msglist *dummy = x->current; t_msglist *nxt=dummy->next; t_msglist *prv=dummy->previous; - freebytes(dummy->thislist, sizeof(dummy->thislist)); - dummy->thislist = 0; - dummy->n = 0; - dummy->next=0; - dummy->previous=0; - - freebytes(dummy, sizeof(t_msglist)); - dummy=0; + if(dummy){ + freebytes(dummy->thislist, sizeof(dummy->thislist)); + dummy->thislist = 0; + dummy->n = 0; + dummy->next=0; + dummy->previous=0; + + freebytes(dummy, sizeof(t_msglist)); + dummy=0; + } if (nxt) nxt->previous = prv; if (prv) prv->next = nxt; @@ -355,9 +356,15 @@ static void msgfile_set(t_msgfile *x, t_symbol *s, int ac, t_atom *av) static void msgfile_replace(t_msgfile *x, t_symbol *s, int ac, t_atom *av) { - freebytes(x->current->thislist, sizeof(x->current->thislist)); - x->current->thislist = 0; - x->current->n = 0; + if(x->current) { + if(x->current->thislist) { + freebytes(x->current->thislist, sizeof(x->current->thislist)); + } + x->current->thislist = 0; + x->current->n = 0; + } else { + add_currentnode(x); + } write_currentnode(x, ac, av); } -- cgit v1.2.1