object deletion during save operations

Not sure why my earlier attempt was unsuccessful.  This one isn't as
comprehensive but is simpler and better yet, works as intended.

When saving a level or exiting the program, objects can be deleted
directly rather than having to pass though the objs_deleted list.
This commit is contained in:
PatR
2025-04-17 16:59:49 -07:00
parent 8b7cbbdb0f
commit 07b59e783e
3 changed files with 12 additions and 4 deletions

View File

@@ -2739,10 +2739,15 @@ dealloc_obj(struct obj *obj)
obj->where = OBJ_LUAFREE;
return;
}
/* mark object as deleted, put it into queue to be freed */
obj->where = OBJ_DELETED;
obj->nobj = go.objs_deleted;
go.objs_deleted = obj;
if (!program_state.freeingdata) {
/* mark object as deleted, put it into queue to be freed */
obj->where = OBJ_DELETED;
obj->nobj = go.objs_deleted;
go.objs_deleted = obj;
} else {
/* when saving, there's no need to stage deletions on objs_deleted */
dealloc_obj_real(obj);
}
}
/* actually deallocate the object */