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

moralrecordings noreply at scummvm.org
Thu Sep 18 09:33:30 UTC 2025


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

Summary:
c0dbff0db7 DIRECTOR: Fix delete-free mismatch


Commit: c0dbff0db7a5c47516889984c32c8913e4103210
    https://github.com/scummvm/scummvm/commit/c0dbff0db7a5c47516889984c32c8913e4103210
Author: Scott Percival (code at moral.net.au)
Date: 2025-09-18T17:32:43+08:00

Commit Message:
DIRECTOR: Fix delete-free mismatch

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index eb082c89e41..343d8074b0a 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1847,14 +1847,18 @@ void Score::loadFrames(Common::SeekableReadStreamEndian &stream, uint16 version)
 	// Index 1 in the list contains the sprite order. We are not using it,
 	if (_version >= kFileVer600) {
 		Common::MemoryReadStreamEndian *stream1 = getSpriteDetailsStream(1);
-		int numSprites = stream1->readUint32();
-		debugCN(2, kDebugLoading, "Sprites order: ");
-		for (int i = 0; i < numSprites; i++) {
-			int spriteId = stream1->readUint32();
-			debugCN(2, kDebugLoading, "%d ", spriteId);
+		if (!stream1) {
+			warning("Score::loadFrames: could not fetch sprite details stream");
+		} else {
+			int numSprites = stream1->readUint32();
+			debugCN(2, kDebugLoading, "Sprites order: ");
+			for (int i = 0; i < numSprites; i++) {
+				int spriteId = stream1->readUint32();
+				debugCN(2, kDebugLoading, "%d ", spriteId);
+			}
+			debugC(2, kDebugLoading, "%s", "");
+			delete stream1;
 		}
-		debugC(2, kDebugLoading, "%s", "");
-		delete stream1;
 	}
 
 	// Calculate number of frames and their positions
@@ -2425,7 +2429,7 @@ Common::MemoryReadStreamEndian *Score::getSpriteDetailsStream(int spriteIdx) {
 		if (!size)
 			return nullptr;
 
-		byte *data = new byte[size];
+		byte *data = (byte *)malloc(size);
 		_framesStream->seek(_spriteDetailOffsets[spriteIdx], SEEK_SET);
 		_framesStream->read(data, size);
 		stream = new Common::MemoryReadStreamEndian(data, size, _framesStream->isBE(), DisposeAfterUse::YES);




More information about the Scummvm-git-logs mailing list