aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2012-11-30 14:19:14 +0100
committerWillem Jan Palenstijn2012-11-30 20:06:36 +0100
commitf5dbd23baba645583ffcb9c452f4f88a5f83a412 (patch)
tree85147deb9e6fd4f8593e411304b852e91a6f0b67 /engines
parent6fd5f650bcad149d7352e5a1406eef8f5ea8397a (diff)
downloadscummvm-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.
Diffstat (limited to 'engines')
-rw-r--r--engines/dreamweb/object.cpp5
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;
}