Hi, On Sun, Feb 05, 2012 at 12:51:25PM +0100, Adriaan de Jong wrote: > Signed-off-by: Adriaan de Jong <dej...@fox-it.com> > --- > buffer.c | 29 ++++++++++------------------- > 1 files changed, 10 insertions(+), 19 deletions(-) > > diff --git a/buffer.c b/buffer.c > index 2f8e4b8..c39bbcb 100644 > --- a/buffer.c > +++ b/buffer.c > @@ -310,28 +310,19 @@ gc_malloc (size_t size, bool clear, struct gc_arena *a) > #endif > { > void *ret; > - if (a) > - { > - struct gc_entry *e;
NACK on that. We discovered that there are use cases where "second-level" callers pass NULL, seemingly on purpose to allocate global memory instead of "in the GC". main(), in openvpn.c: /* initialize environmental variable store */ c.es = env_set_create (NULL); ... which calls into misc.c: struct env_set * env_set_create (struct gc_arena *gc) { struct env_set *es; ALLOC_OBJ_CLEAR_GC (es, struct env_set, gc); es->list = NULL; es->gc = gc; return es; } ... and boom, assert() fail. Adriaan saw the crash ("my nice OpenBSD test run!!!") and promised to work on this on the way back in the train. gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany g...@greenie.muc.de fax: +49-89-35655025 g...@net.informatik.tu-muenchen.de
pgpujUS98Vp2T.pgp
Description: PGP signature