diff --git a/src/array.c b/src/array.c index a3113ef709bcc805a477fba682f6fcf62d79bbef..fc28cdbe1e90a8dba0d443e6af909fcb52ec1316 100644 --- a/src/array.c +++ b/src/array.c @@ -23,7 +23,7 @@ #include "stuff.h" #include "bignum.h" -RCSID("$Id: array.c,v 1.64 2000/04/12 18:40:12 hubbe Exp $"); +RCSID("$Id: array.c,v 1.65 2000/04/17 16:48:57 grubba Exp $"); struct array empty_array= { @@ -1859,11 +1859,10 @@ void gc_free_all_unreferenced_arrays(void) free_svalues(ITEM(a), a->size, a->type_field); a->size=0; - if(!(next=a->next)) - fatal("Null pointer in array list.\n"); + SET_NEXT_AND_FREE(a, free_array); - free_array(a); - a=next; + if (!(a = next)) + fatal("Null pointer in array list.\n"); } else if(a->flags & ARRAY_WEAK_FLAG) { @@ -1901,11 +1900,10 @@ void gc_free_all_unreferenced_arrays(void) } } - if(!(next=a->next)) - fatal("Null pointer in array list.\n"); + SET_NEXT_AND_FREE(a, free_array); - free_array(a); - a=next; + if (!(a = next)) + fatal("Null pointer in array list.\n"); } else {