[Scummvm-git-logs] scummvm master -> 65f05b4d78ddd9a5dc54285ea085d4c1595c4eba

fracturehill noreply at scummvm.org
Sat Nov 4 12:32:19 UTC 2023


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
fecfd1b462 AD: Improve archive scanning sanity check
0260875821 NANCY: Fix Overlay crash
65f05b4d78 NANCY: Do not crash when attempting to decode bad video frame


Commit: fecfd1b462e2a8bbf12f295906fbe8817c6936a8
    https://github.com/scummvm/scummvm/commit/fecfd1b462e2a8bbf12f295906fbe8817c6936a8
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-04T14:31:37+02:00

Commit Message:
AD: Improve archive scanning sanity check

Improved the game entry sanity check for entries with
archive scanning so it no longer assumes an A: prefix in the
md5 sum is unaccompanied by other prefixes.

Changed paths:
    engines/advancedDetector.cpp


diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp
index 18a629d5243..f73e358a09b 100644
--- a/engines/advancedDetector.cpp
+++ b/engines/advancedDetector.cpp
@@ -1171,7 +1171,7 @@ void AdvancedMetaEngineDetection::detectClashes() const {
 				break;
 			}
 
-			if (fileDesc.md5 && fileDesc.md5[0] == 'A' && fileDesc.md5[1] == ':') {
+			if (gameFileToMD5Props(&fileDesc, ((const ADGameDescription *)descPtr)->flags) & kMD5Archive) {
 				Common::StringTokenizer tok(fileDesc.fileName, ":");
 				uint numTokens = 0;
 


Commit: 02608758214384e540e83867abf7f7751ddd0eb5
    https://github.com/scummvm/scummvm/commit/02608758214384e540e83867abf7f7751ddd0eb5
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-04T14:31:37+02:00

Commit Message:
NANCY: Fix Overlay crash

Fixed a divide by 0 crash in nancy2 caused by bad data
in an Overlay action record

Changed paths:
    engines/nancy/action/overlay.cpp


diff --git a/engines/nancy/action/overlay.cpp b/engines/nancy/action/overlay.cpp
index 5b184c274da..38af9db5866 100644
--- a/engines/nancy/action/overlay.cpp
+++ b/engines/nancy/action/overlay.cpp
@@ -197,7 +197,7 @@ void Overlay::execute() {
 					_nextFrameTime = _currentFrameTime + _frameTime;
 				} else {
 					uint32 timeDiff = _currentFrameTime - _nextFrameTime;
-					frameDiff = timeDiff / _frameTime;
+					frameDiff = timeDiff / MAX<uint32>(_frameTime, 1); // Fix for nancy2 scene 1090, where _frameTime is 0
 					_nextFrameTime += _frameTime * frameDiff;
 				}
 


Commit: 65f05b4d78ddd9a5dc54285ea085d4c1595c4eba
    https://github.com/scummvm/scummvm/commit/65f05b4d78ddd9a5dc54285ea085d4c1595c4eba
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-04T14:31:37+02:00

Commit Message:
NANCY: Do not crash when attempting to decode bad video frame

There's at least one scene in an early nancy1 release that
reports a last frame of 51, when the video itself only contains
50 frames; attempting to decode that frame would crash
throw a warning and crash the engine. This warning has
now been demoted to debug output, and the decoder will
now gracefully return the last valid frame any time a
nonexistent frame is requested from it.

Changed paths:
    engines/nancy/detection.h
    engines/nancy/video.cpp


diff --git a/engines/nancy/detection.h b/engines/nancy/detection.h
index af92635621f..1afe32cd0cc 100644
--- a/engines/nancy/detection.h
+++ b/engines/nancy/detection.h
@@ -54,7 +54,8 @@ enum NancyDebugChannels {
 	kDebugEngine		= 1 << 0,
 	kDebugActionRecord	= 1 << 1,
 	kDebugScene			= 1 << 2,
-	kDebugSound			= 1 << 3
+	kDebugSound			= 1 << 3,
+	kDebugVideo			= 1 << 4
 };
 
 #define GAMEOPTION_PLAYER_SPEECH GUIO_GAMEOPTIONS1
diff --git a/engines/nancy/video.cpp b/engines/nancy/video.cpp
index 7f7b77795b8..a89d74bbe05 100644
--- a/engines/nancy/video.cpp
+++ b/engines/nancy/video.cpp
@@ -279,8 +279,8 @@ const Graphics::Surface *AVFDecoder::AVFVideoTrack::decodeFrame(uint frameNr)  {
 	}
 
 	if (frameNr >= _chunkInfo.size()) {
-		warning("Frame %d doesn't exist", frameNr);
-		return nullptr;
+		debugC(kDebugVideo, "Frame %d doesn't exist, returning last frame %d", frameNr, _chunkInfo.size() - 1);
+		return decodeFrame(_chunkInfo.size() - 1);
 	}
 
 	const ChunkInfo &info = _chunkInfo[frameNr];




More information about the Scummvm-git-logs mailing list