[Scummvm-git-logs] scummvm master -> f7deafa90cc4ac4124c4a28c385517c7b105b700

mgerhardy noreply at scummvm.org
Mon Aug 24 19:14:56 UTC 2026


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

Summary:
9358a2b0b8 MACS2: fixed CID 1685486
f7deafa90c MACS2: fixed coverity INTEGER_OVERFLOW issues


Commit: 9358a2b0b8997c63b9e5b0318eea6d7d821a73aa
    https://github.com/scummvm/scummvm/commit/9358a2b0b8997c63b9e5b0318eea6d7d821a73aa
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2026-08-24T21:11:09+02:00

Commit Message:
MACS2: fixed CID 1685486

Changed paths:
    engines/macs2/macs2.cpp


diff --git a/engines/macs2/macs2.cpp b/engines/macs2/macs2.cpp
index 5cbd6344621..b5ea69e9a21 100644
--- a/engines/macs2/macs2.cpp
+++ b/engines/macs2/macs2.cpp
@@ -1672,18 +1672,19 @@ bool Macs2Engine::loadDeltaAnimResource(uint8 resourceIndex, uint16 executingObj
 		_fileStream->seek(oldPos, SEEK_SET);
 		return false;
 	}
+	const uint16 numFrames = frameCount;
 
 	// Scripts call addDeltaSfx before playDiskDelta; keep the pending SFX list.
 	Common::Array<DeltaSfxEvent> savedSfx = Common::move(_deltaAnim.sfxEvents);
 	clearDeltaAnim();
 	_deltaAnim.sfxEvents = Common::move(savedSfx);
 	_fileStream->read(_deltaAnim.palette, 0x300);
-	_deltaAnim.frames.resize(frameCount);
-	_deltaAnim.frameCount = frameCount;
+	_deltaAnim.frames.resize(numFrames);
+	_deltaAnim.frameCount = numFrames;
 	_deltaAnim.loaded = true;
 
 	const uint32 base = address + 4;
-	for (uint16 fi = 0; fi < frameCount; fi++) {
+	for (uint16 fi = 0; fi < numFrames; fi++) {
 		const uint32 absOff = relOffsets[fi] + base;
 		if (absOff >= (uint32)_fileStream->size())
 			continue;


Commit: f7deafa90cc4ac4124c4a28c385517c7b105b700
    https://github.com/scummvm/scummvm/commit/f7deafa90cc4ac4124c4a28c385517c7b105b700
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2026-08-24T21:14:36+02:00

Commit Message:
MACS2: fixed coverity INTEGER_OVERFLOW issues

Changed paths:
    engines/macs2/scriptexecutor.cpp


diff --git a/engines/macs2/scriptexecutor.cpp b/engines/macs2/scriptexecutor.cpp
index f8cb5e74786..8c168aa6824 100644
--- a/engines/macs2/scriptexecutor.cpp
+++ b/engines/macs2/scriptexecutor.cpp
@@ -3368,8 +3368,8 @@ OpcodeResult ScriptExecutor::scriptStopSong() {
 }
 
 OpcodeResult ScriptExecutor::scriptSetMainActor() {
-	const uint32 objectID = scriptReadValue32() - 0x400;
-	debugC(kDebugScript, "SCRIPT::setMainActor(objectID=%u)", objectID);
+	const int32 objectID = (int32)scriptReadValue32() - 0x400;
+	debugC(kDebugScript, "SCRIPT::setMainActor(objectID=%d)", objectID);
 
 	clearScriptError();
 	if (objectID < 1 || objectID > 0x200) {
@@ -3510,10 +3510,10 @@ OpcodeResult ScriptExecutor::scriptScreenShot() {
 }
 
 OpcodeResult ScriptExecutor::scriptWaitObjectAnimStep() {
-	const uint32 objectID = scriptReadValue32() - 0x400;
+	const int32 objectID = (int32)scriptReadValue32() - 0x400;
 	const uint16 animNr = scriptReadValue16();
 	const uint16 animStep = scriptReadValue16();
-	debugC(kDebugScript, "SCRIPT::waitObjectAnimStep(objectID=%u, animNr=%u, animStep=%u)",
+	debugC(kDebugScript, "SCRIPT::waitObjectAnimStep(objectID=%d, animNr=%u, animStep=%u)",
 		   objectID, animNr, animStep);
 	scriptSkipOpcodeRemainder(0x56);
 
@@ -3547,14 +3547,14 @@ OpcodeResult ScriptExecutor::scriptWaitObjectAnimStep() {
 }
 
 OpcodeResult ScriptExecutor::scriptWaitSpecialAnimStep() {
-	const uint32 sceneAnimIndex = scriptReadValue32() - 0x1000;
+	const int32 sceneAnimIndex = (int32)scriptReadValue32() - 0x1000;
 	const uint16 animStep = scriptReadValue16();
-	debugC(kDebugScript, "SCRIPT::waitSpecialAnimStep(sceneAnimIndex=%u, animStep=%u)",
+	debugC(kDebugScript, "SCRIPT::waitSpecialAnimStep(sceneAnimIndex=%d, animStep=%u)",
 		   sceneAnimIndex, animStep);
 	scriptSkipOpcodeRemainder(0x57);
 
 	clearScriptError();
-	if (sceneAnimIndex == 0 || sceneAnimIndex > _engine->_backgroundAnimationsBlobs.size()) {
+	if (sceneAnimIndex == 0 || sceneAnimIndex > (int32)_engine->_backgroundAnimationsBlobs.size()) {
 		setScriptError(8);
 		return OpcodeResult::Continue;
 	}
@@ -3569,10 +3569,10 @@ OpcodeResult ScriptExecutor::scriptWaitSpecialAnimStep() {
 }
 
 OpcodeResult ScriptExecutor::scriptSetObjectAdjust() {
-	const uint32 objectID = scriptReadValue32() - 0x400;
+	const int32 objectID = (int32)scriptReadValue32() - 0x400;
 	const uint16 adjust1 = scriptReadValue16();
 	const uint16 adjust2 = scriptReadValue16();
-	debugC(kDebugScript, "SCRIPT::setObjectAdjust(objectID=%u, adjust1=%u, adjust2=%u)",
+	debugC(kDebugScript, "SCRIPT::setObjectAdjust(objectID=%d, adjust1=%u, adjust2=%u)",
 		   objectID, adjust1, adjust2);
 
 	clearScriptError();
@@ -3595,12 +3595,12 @@ OpcodeResult ScriptExecutor::scriptSetObjectAdjust() {
 }
 
 OpcodeResult ScriptExecutor::scriptReloadSpecialAnim() {
-	const uint32 sceneAnimIndex = scriptReadValue32() - 0x1000;
+	const int32 sceneAnimIndex = (int32)scriptReadValue32() - 0x1000;
 	const uint8 resourceIndex = readByte();
-	debugC(kDebugScript, "SCRIPT::reloadSpecialAnim(anim=%u res=%u)", sceneAnimIndex, resourceIndex);
+	debugC(kDebugScript, "SCRIPT::reloadSpecialAnim(anim=%d res=%u)", sceneAnimIndex, resourceIndex);
 	clearScriptError();
 	scriptSkipOpcodeRemainder(0x59);
-	if (sceneAnimIndex == 0 || sceneAnimIndex > _engine->_backgroundAnimationsBlobs.size()) {
+	if (sceneAnimIndex == 0 || sceneAnimIndex > (int32)_engine->_backgroundAnimationsBlobs.size()) {
 		setScriptError(8);
 		return OpcodeResult::Continue;
 	}
@@ -3684,10 +3684,10 @@ OpcodeResult ScriptExecutor::scriptSetWaveVolume() {
 }
 
 OpcodeResult ScriptExecutor::scriptLoadSpecialAnimSlot() {
-	const uint32 sceneAnimIndex = scriptReadValue32() - 0x1000;
+	const int32 sceneAnimIndex = (int32)scriptReadValue32() - 0x1000;
 	const uint16 slot = scriptReadValue16();
 	const uint8 resourceIndex = readByte();
-	debugC(kDebugScript, "SCRIPT::loadSpecialAnimSlot(anim=%u slot=%u res=%u)",
+	debugC(kDebugScript, "SCRIPT::loadSpecialAnimSlot(anim=%d slot=%u res=%u)",
 		   sceneAnimIndex, slot, resourceIndex);
 	clearScriptError();
 	scriptSkipOpcodeRemainder(0x5E);
@@ -3695,7 +3695,7 @@ OpcodeResult ScriptExecutor::scriptLoadSpecialAnimSlot() {
 		setScriptError(0x31);
 		return OpcodeResult::Continue;
 	}
-	if (sceneAnimIndex == 0 || sceneAnimIndex > _engine->_backgroundAnimationsBlobs.size()) {
+	if (sceneAnimIndex == 0 || sceneAnimIndex > (int32)_engine->_backgroundAnimationsBlobs.size()) {
 		setScriptError(8);
 		return OpcodeResult::Continue;
 	}
@@ -3708,16 +3708,16 @@ OpcodeResult ScriptExecutor::scriptLoadSpecialAnimSlot() {
 }
 
 OpcodeResult ScriptExecutor::scriptSetSpecialAnimSlot() {
-	const uint32 sceneAnimIndex = scriptReadValue32() - 0x1000;
+	const int32 sceneAnimIndex = (int32)scriptReadValue32() - 0x1000;
 	const uint16 slot = scriptReadValue16();
-	debugC(kDebugScript, "SCRIPT::setSpecialAnimSlot(anim=%u slot=%u)", sceneAnimIndex, slot);
+	debugC(kDebugScript, "SCRIPT::setSpecialAnimSlot(anim=%d slot=%u)", sceneAnimIndex, slot);
 	clearScriptError();
 	scriptSkipOpcodeRemainder(0x5F);
 	if (slot > 8) {
 		setScriptError(0x31);
 		return OpcodeResult::Continue;
 	}
-	if (sceneAnimIndex == 0 || sceneAnimIndex > _engine->_backgroundAnimationsBlobs.size()) {
+	if (sceneAnimIndex == 0 || sceneAnimIndex > (int32)_engine->_backgroundAnimationsBlobs.size()) {
 		setScriptError(8);
 		return OpcodeResult::Continue;
 	}
@@ -3731,16 +3731,16 @@ OpcodeResult ScriptExecutor::scriptSetSpecialAnimSlot() {
 }
 
 OpcodeResult ScriptExecutor::scriptClearSpecialAnimSlot() {
-	const uint32 sceneAnimIndex = scriptReadValue32() - 0x1000;
+	const int32 sceneAnimIndex = (int32)scriptReadValue32() - 0x1000;
 	const uint16 slot = scriptReadValue16();
-	debugC(kDebugScript, "SCRIPT::clearSpecialAnimSlot(anim=%u slot=%u)", sceneAnimIndex, slot);
+	debugC(kDebugScript, "SCRIPT::clearSpecialAnimSlot(anim=%d slot=%u)", sceneAnimIndex, slot);
 	clearScriptError();
 	scriptSkipOpcodeRemainder(0x60);
 	if (slot > 8) {
 		setScriptError(0x31);
 		return OpcodeResult::Continue;
 	}
-	if (sceneAnimIndex == 0 || sceneAnimIndex > _engine->_backgroundAnimationsBlobs.size()) {
+	if (sceneAnimIndex == 0 || sceneAnimIndex > (int32)_engine->_backgroundAnimationsBlobs.size()) {
 		setScriptError(8);
 		return OpcodeResult::Continue;
 	}




More information about the Scummvm-git-logs mailing list