[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