diff options
author | Willem Jan Palenstijn | 2012-11-30 14:19:14 +0100 |
---|---|---|
committer | Willem Jan Palenstijn | 2012-11-30 20:06:36 +0100 |
commit | f5dbd23baba645583ffcb9c452f4f88a5f83a412 (patch) | |
tree | 85147deb9e6fd4f8593e411304b852e91a6f0b67 | |
parent | 6fd5f650bcad149d7352e5a1406eef8f5ea8397a (diff) | |
download | scummvm-rg350-f5dbd23baba645583ffcb9c452f4f88a5f83a412.tar.gz scummvm-rg350-f5dbd23baba645583ffcb9c452f4f88a5f83a412.tar.bz2 scummvm-rg350-f5dbd23baba645583ffcb9c452f4f88a5f83a412.zip |
DREAMWEB: Fix emergencyPurge checks
It could re-delete previously deleted objects, causing
ex data (frame/text) corruption. This is the likely cause of bug #3591088.
Asm conversion error from eaf87bdfa7ac279f736c03b25af94ac1df3b31ce.
-rw-r--r-- | engines/dreamweb/object.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp index bb9e9677d7..458630753c 100644 --- a/engines/dreamweb/object.cpp +++ b/engines/dreamweb/object.cpp @@ -1131,7 +1131,8 @@ void DreamWebEngine::purgeAnItem() { const DynObject *extraObjects = _exData; for (uint i = 0; i < kNumexobjects; ++i) { - if (extraObjects[i].mapad[0] && extraObjects[i].objId[0] == 255 && + if (extraObjects[i].mapad[0] == 0 && + (extraObjects[i].objId[0] == 255 || extraObjects[i].objId[0] == 2) && extraObjects[i].initialLocation != _realLocation) { deleteExObject(i); return; @@ -1139,7 +1140,7 @@ void DreamWebEngine::purgeAnItem() { } for (uint i = 0; i < kNumexobjects; ++i) { - if (extraObjects[i].mapad[0] && extraObjects[i].objId[0] == 255) { + if (extraObjects[i].mapad[0] == 0 && extraObjects[i].objId[0] == 255) { deleteExObject(i); return; } |