diff --git a/src/object.c b/src/object.c index 98cd3b104c..c721cb67c4 100644 --- a/src/object.c +++ b/src/object.c @@ -398,6 +398,7 @@ void object_unload_chunk(rct_object_entry *entry) object_unload(object_type, chunk); free(chunk); + memset(&object_entry_groups[object_type].entries[object_index], 0, sizeof(rct_object_entry_extended)); object_entry_groups[object_type].chunks[object_index] = (uint8*)-1; } diff --git a/src/object_list.c b/src/object_list.c index e5706ef093..f779483c69 100644 --- a/src/object_list.c +++ b/src/object_list.c @@ -541,8 +541,6 @@ void set_load_objects_fail_reason() */ bool object_read_and_load_entries(SDL_RWops* rw) { - object_unload_all(); - // Read all the object entries rct_object_entry *entries = malloc(OBJECT_ENTRY_COUNT * sizeof(rct_object_entry)); sawyercoding_read_chunk(rw, (uint8*)entries); @@ -555,6 +553,8 @@ bool object_load_entries(rct_object_entry* entries) { log_verbose("loading required objects"); + object_unload_all(); + bool loadFailed = false; // Load each object for (int i = 0; i < OBJECT_ENTRY_COUNT; i++) {