Branch: Tag:

2000-04-22

2000-04-22 18:48:58 by Martin Stjernholm <mast@lysator.liu.se>

A both simpler and more robust gc fix. Should also fix a potential bug that
I haven't managed to trig.

Rev: src/array.c:1.65
Rev: src/gc.c:1.57
Rev: src/gc.h:1.27
Rev: src/mapping.c:1.73
Rev: src/multiset.c:1.19
Rev: src/object.c:1.105
Rev: src/program.c:1.225
Rev: src/svalue.c:1.67

5:   \*/   /**/   #include "global.h" - RCSID("$Id: mapping.c,v 1.72 2000/04/22 13:20:39 mast Exp $"); + RCSID("$Id: mapping.c,v 1.73 2000/04/22 18:48:58 mast Exp $");   #include "main.h"   #include "object.h"   #include "mapping.h"
63:    \    if(m->next) m->next->prev = m->prev; \    \ -  GC_FREE(m); +  GC_FREE();         #undef COUNT_OTHER
170:   {    struct mapping *m;    -  GC_ALLOC(); -  +     m=alloc_mapping();    -  +  GC_ALLOC(m); +     INITIALIZE_PROT(m);    init_mapping(m,size);   
1841:    }   #endif /* DEBUG_MALLOC */    -  if(gc_check_nongarbed(m->data)) continue; -  +     if((m->data->ind_types | m->data->val_types) & BIT_COMPLEX)    { -  +  if(gc_check(m->data)) continue; +     MAPPING_LOOP(m)    {    /* We do not want to count this key:index pair if