[Scummvm-git-logs] scummvm master -> 67908559167844a1a207d1544dfcdbd8f8ca1260
bluegr
bluegr at gmail.com
Wed May 1 13:53:26 CEST 2019
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6790855916 SCI: Handle recursive view loop references
Commit: 67908559167844a1a207d1544dfcdbd8f8ca1260
https://github.com/scummvm/scummvm/commit/67908559167844a1a207d1544dfcdbd8f8ca1260
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-05-01T14:53:23+03:00
Commit Message:
SCI: Handle recursive view loop references
Fixes bug #10953 in FPFP
Changed paths:
engines/sci/graphics/view.cpp
diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp
index 014ddb1..5924571 100644
--- a/engines/sci/graphics/view.cpp
+++ b/engines/sci/graphics/view.cpp
@@ -286,10 +286,15 @@ void GfxView::initData(GuiResourceId resourceId) {
seekEntry = loopData[0];
if (seekEntry != 255) {
- if (seekEntry >= loopCount)
- error("Bad loop-pointer in sci 1.1 view");
_loop[loopNo].mirrorFlag = true;
- loopData = _resource->subspan(headerSize + (seekEntry * loopSize));
+
+ // use the root loop for mirroring. this handles rare loops that
+ // mirror loops that mirror loops. (FPFP view 844, bug #10953)
+ do {
+ if (seekEntry >= loopCount)
+ error("Bad loop-pointer in sci 1.1 view");
+ loopData = _resource->subspan(headerSize + (seekEntry * loopSize));
+ } while ((seekEntry = loopData[0]) != 255);
} else {
_loop[loopNo].mirrorFlag = false;
}
More information about the Scummvm-git-logs
mailing list