From c741f733a0c6cdc9ccaa8c219b098cc1a445373c Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Tue, 7 Sep 2021 23:34:45 +0100 Subject: [PATCH] SUPERNOVA: Fix use-after-free bug when dying Since the inventory contains pointers to objects from the rooms, we need to clear the inventory before we destroy the rooms and not after! --- engines/supernova/game-manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/supernova/game-manager.cpp b/engines/supernova/game-manager.cpp index 2c8eba57726..740b3c49fff 100644 --- a/engines/supernova/game-manager.cpp +++ b/engines/supernova/game-manager.cpp @@ -947,6 +947,7 @@ void GameManager::dead(int messageId) { _vm->paletteFadeOut(); _vm->removeMessage(); + _inventory.clear(); destroyRooms(); initRooms(); initState(); @@ -955,7 +956,6 @@ void GameManager::dead(int messageId) { else if (_vm->_MSPart == 2) changeRoom(AIRPORT); initGui(); - _inventory.clear(); g_system->fillScreen(kColorBlack); _vm->paletteFadeIn();