From f5dbd23baba645583ffcb9c452f4f88a5f83a412 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 30 Nov 2012 14:19:14 +0100 Subject: 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. --- engines/dreamweb/object.cpp | 5 +++-- 1 file 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; } -- cgit v1.2.3