diff --git a/src/svalue.c b/src/svalue.c index 3c75166201824d8db0978e200dcc2f57d7dc9d82..0cc24edc8c96bedec7dfda58a273cc876b323951 100644 --- a/src/svalue.c +++ b/src/svalue.c @@ -654,6 +654,8 @@ TYPE_FIELD gc_check_svalues(struct svalue *s, int num) gc_check(s->u.object); }else{ free_svalue(s); + s->type=T_INT; + s->u.integer=0; } break; @@ -680,6 +682,7 @@ void gc_check_short_svalue(union anything *u, TYPE_T type) gc_check(u->object); }else{ free_short_svalue(u,T_OBJECT); + u->object=0; } break; @@ -713,6 +716,8 @@ void gc_mark_svalues(struct svalue *s, int num) gc_mark_object_as_referenced(s->u.object); }else{ free_svalue(s); + s->type=T_INT; + s->u.integer=0; } break; } @@ -735,6 +740,7 @@ void gc_mark_short_svalue(union anything *u, TYPE_T type) gc_mark_object_as_referenced(u->object); }else{ free_short_svalue(u,T_OBJECT); + u->object=0; } break; }