--- stack/stack.c 2002/03/10 09:13:36 1.98 +++ stack/stack.c 2002/03/10 10:06:36 1.99 @@ -126,7 +126,8 @@ env->gc_ref= nitem; env->gc_count++; - nval->gc_garb= 1; + nval->gc.flag.mark= 0; + nval->gc.flag.protect= 0; return nval; } @@ -137,10 +138,10 @@ { stackitem *iterator; - if(val->gc_garb==0) + if(val->gc.flag.mark) return; - val->gc_garb= 0; + val->gc.flag.mark= 1; if(val->type==list) { iterator= val->content.ptr; @@ -188,8 +189,7 @@ while(env->gc_ref!=NULL) { /* Sweep unused values */ - if(env->gc_ref->item->gc_garb - && !(env->gc_ref->item->gc_protect)) { + if(!(env->gc_ref->item->gc.no_gc)){ /* neither mark nor protect */ switch(env->gc_ref->item->type) { /* Remove content */ case string: @@ -214,7 +214,7 @@ titem= env->gc_ref->next; env->gc_ref->next= new_head; new_head= env->gc_ref; - new_head->item->gc_garb= 1; + new_head->item->gc.flag.mark= 0; env->gc_ref= titem; env->gc_count++; } @@ -228,10 +228,10 @@ { stackitem *iterator; - if(val->gc_protect) + if(val->gc.flag.protect) return; - val->gc_protect= 1; + val->gc.flag.protect= 1; if(val->type==list) { iterator= val->content.ptr; @@ -248,10 +248,10 @@ { stackitem *iterator; - if(!(val->gc_protect)) + if(!(val->gc.flag.protect)) return; - val->gc_protect= 0; + val->gc.flag.protect= 0; if(val->type==list) { iterator= val->content.ptr; @@ -994,7 +994,7 @@ } if(myenv.interactive) { - printf("Stack version $Revision: 1.98 $\n\ + printf("Stack version $Revision: 1.99 $\n\ Copyright (C) 2002 Mats Alritzson and Teddy Hogeborn\n\ Stack comes with ABSOLUTELY NO WARRANTY; for details type `warranty;'.\n\ This is free software, and you are welcome to redistribute it\n\