[Scummvm-git-logs] scummvm master -> 30b6bba0d2230ae691a33097b58fd807bf570802

kelmer44 noreply at scummvm.org
Thu May 14 08:34:25 UTC 2026


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:
30b6bba0d2 PELROCK: Fixes resource leaks


Commit: 30b6bba0d2230ae691a33097b58fd807bf570802
    https://github.com/scummvm/scummvm/commit/30b6bba0d2230ae691a33097b58fd807bf570802
Author: kelmer (kelmer at gmail.com)
Date: 2026-05-14T10:34:17+02:00

Commit Message:
PELROCK: Fixes resource leaks

Changed paths:
    engines/pelrock/actions.cpp
    engines/pelrock/cdplayer.cpp
    engines/pelrock/resources.cpp
    engines/pelrock/room.cpp
    engines/pelrock/saveload.cpp


diff --git a/engines/pelrock/actions.cpp b/engines/pelrock/actions.cpp
index 5062db15a0e..0c9f75956c4 100644
--- a/engines/pelrock/actions.cpp
+++ b/engines/pelrock/actions.cpp
@@ -1831,6 +1831,7 @@ void PelrockEngine::smokeAnimation(int spriteIndex, bool hide) {
 		_screen->update();
 		g_system->delayMillis(10);
 	}
+	smokeSurface.free();
 }
 
 void PelrockEngine::openArchitectDoor(HotSpot *hotspot) {
diff --git a/engines/pelrock/cdplayer.cpp b/engines/pelrock/cdplayer.cpp
index a67575a2cbb..25e98198aa7 100644
--- a/engines/pelrock/cdplayer.cpp
+++ b/engines/pelrock/cdplayer.cpp
@@ -128,6 +128,8 @@ void CDPlayer::cleanup() {
 
 	g_engine->_screen->markAllDirty();
 	g_engine->_screen->update();
+	delete[] _controls;
+	_controls = nullptr;
 }
 
 void CDPlayer::checkMouse(int x, int y) {
diff --git a/engines/pelrock/resources.cpp b/engines/pelrock/resources.cpp
index 3e74157745e..4d6c56d3c6b 100644
--- a/engines/pelrock/resources.cpp
+++ b/engines/pelrock/resources.cpp
@@ -328,6 +328,7 @@ void ResourceManager::loadOtherSpecialAnim(uint32 offset, bool rleCompressed, by
 		size_t compressedSize = 0;
 		readUntilBuda(&alfred7, offset, compressed, compressedSize);
 		bufferSize = rleDecompress(compressed, compressedSize, 0, 0, &buffer, true);
+		free(compressed);
 	} else {
 		alfred7.seek(offset, SEEK_SET);
 		alfred7.read(buffer, bufferSize);
diff --git a/engines/pelrock/room.cpp b/engines/pelrock/room.cpp
index ac5a5a8f4a3..e7c64d4cad8 100644
--- a/engines/pelrock/room.cpp
+++ b/engines/pelrock/room.cpp
@@ -998,6 +998,7 @@ void RoomManager::loadRoomAnimations(byte *pixelData, size_t pixelDataSize, byte
 				}
 
 			} else {
+				delete[] anim.animData;
 				continue;
 			}
 			sprite.animData[j] = anim;
@@ -1290,6 +1291,7 @@ byte *RoomManager::loadShadowMap(int roomNumber) {
 	size_t decompressedSize = rleDecompress(compressed, compressedSize, 0, 640 * 400, &shadows);
 	if (decompressedSize == 0) {
 		debug("Failed to decompress shadow map for room %d", roomNumber);
+		free(shadows);
 		shadows = nullptr;
 	}
 	// debug("Decompressed shadow map for room %d, compressed size: %zu, decompressed size: %zu", roomNumber, compressedSize, decompressedSize);
diff --git a/engines/pelrock/saveload.cpp b/engines/pelrock/saveload.cpp
index 3aae8c5c511..c8598ef2b42 100644
--- a/engines/pelrock/saveload.cpp
+++ b/engines/pelrock/saveload.cpp
@@ -308,6 +308,7 @@ bool syncGameStateData(Common::Serializer &s, GameStateData *gameState) {
 			for (uint16 i = 0; i < numBranches; ++i) {
 				ResetEntry entry = branches[i];
 				syncResetEntry(s, entry);
+				delete[] entry.data;
 			}
 		}
 	} else {




More information about the Scummvm-git-logs mailing list