diff --git a/src/object.c b/src/object.c index 0e2a51786cff708d354c4a0d4686831d42112a49..8bcee98f89a6bb3f960534cc3bd7a97f37eb500a 100644 --- a/src/object.c +++ b/src/object.c @@ -4,7 +4,7 @@ ||| See the files COPYING and DISCLAIMER for more information. \*/ #include "global.h" -RCSID("$Id: object.c,v 1.53 1998/11/22 11:03:04 hubbe Exp $"); +RCSID("$Id: object.c,v 1.54 1999/03/30 22:00:28 grubba Exp $"); #include "object.h" #include "dynamic_buffer.h" #include "interpret.h" @@ -439,12 +439,6 @@ void really_free_object(struct object *o) if(--o->refs > 0) return; } - if(o->parent) - { - free_object(o->parent); - o->parent=0; - } - if(o->prev) o->prev->next=o->next; else @@ -465,6 +459,12 @@ void really_free_object(struct object *o) o->prev=0; objects_to_destruct=o; } else { + if(o->parent) + { + free_object(o->parent); + o->parent=0; + } + free((char *)o); GC_FREE(); }