diff --git a/src/openrct2/object/ObjectList.cpp b/src/openrct2/object/ObjectList.cpp index 06465d3f05..26035d97f6 100644 --- a/src/openrct2/object/ObjectList.cpp +++ b/src/openrct2/object/ObjectList.cpp @@ -138,8 +138,13 @@ const rct_object_entry* get_loaded_object_entry(size_t index) ObjectType objectType; ObjectEntryIndex entryIndex; get_type_entry_index(index, &objectType, &entryIndex); + auto obj = object_entry_get_object(objectType, entryIndex); + if (obj == nullptr) + { + return nullptr; + } - return object_entry_get_object(objectType, entryIndex)->GetObjectEntry(); + return obj->GetObjectEntry(); } void* get_loaded_object_chunk(size_t index) diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 8aebb7cc77..0c2989f8be 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -168,7 +168,7 @@ void S6Exporter::Export() const rct_object_entry* entry = get_loaded_object_entry(i); void* entryData = get_loaded_object_chunk(i); // RCT2 uses (void *)-1 to mark NULL. Make sure it's written in a vanilla-compatible way. - if (entryData == nullptr || entryData == reinterpret_cast(-1)) + if (entry == nullptr || entryData == nullptr || entryData == reinterpret_cast(-1)) { std::memset(&_s6.objects[i], 0xFF, sizeof(rct_object_entry)); }