[Scummvm-git-logs] scummvm master -> 7dfae3e2d4f56fdd20bb255ddc6d31f6cd1b67ff

AndywinXp noreply at scummvm.org
Fri Jun 27 07:29:42 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:
7dfae3e2d4 LASTEXPRESS: Fix some more Valgrind issues


Commit: 7dfae3e2d4f56fdd20bb255ddc6d31f6cd1b67ff
    https://github.com/scummvm/scummvm/commit/7dfae3e2d4f56fdd20bb255ddc6d31f6cd1b67ff
Author: AndywinXp (andywinxp at gmail.com)
Date: 2025-06-27T09:29:35+02:00

Commit Message:
LASTEXPRESS: Fix some more Valgrind issues

Changed paths:
    engines/lastexpress/game/action.cpp
    engines/lastexpress/game/nis.cpp
    engines/lastexpress/lastexpress.cpp
    engines/lastexpress/lastexpress.h
    engines/lastexpress/memory.cpp
    engines/lastexpress/menu/menu.cpp


diff --git a/engines/lastexpress/game/action.cpp b/engines/lastexpress/game/action.cpp
index 212547f8d4b..8e0ea0ef35b 100644
--- a/engines/lastexpress/game/action.cpp
+++ b/engines/lastexpress/game/action.cpp
@@ -554,6 +554,7 @@ void LogicManager::doPostFunction() {
 					break;
 				_engine->getSoundManager()->soundThread();
 				_engine->getSubtitleManager()->subThread();
+				_engine->waitForTimer(4);
 			} while (delayedTicks > _engine->getSoundFrameCounter());
 		}
 
diff --git a/engines/lastexpress/game/nis.cpp b/engines/lastexpress/game/nis.cpp
index f518feb43d5..313d17876bb 100644
--- a/engines/lastexpress/game/nis.cpp
+++ b/engines/lastexpress/game/nis.cpp
@@ -39,6 +39,7 @@ NISManager::~NISManager() {
 	SAFE_DELETE(_background2);
 	SAFE_DELETE(_waneSprite);
 	SAFE_DELETE(_waxSprite);
+	SAFE_DELETE(_events);
 }
 
 void NISManager::clearBounds() {
diff --git a/engines/lastexpress/lastexpress.cpp b/engines/lastexpress/lastexpress.cpp
index 738585d19c6..621929ddac7 100644
--- a/engines/lastexpress/lastexpress.cpp
+++ b/engines/lastexpress/lastexpress.cpp
@@ -79,6 +79,7 @@ LastExpressEngine::~LastExpressEngine() {
 	SAFE_DELETE(_clock);
 	SAFE_DELETE(_vcr);
 	SAFE_DELETE(_soundMutex);
+	SAFE_DELETE(_savegame);
 
 	//_debugger is deleted by Engine
 
diff --git a/engines/lastexpress/lastexpress.h b/engines/lastexpress/lastexpress.h
index 9d80306e109..6e4291bbd0d 100644
--- a/engines/lastexpress/lastexpress.h
+++ b/engines/lastexpress/lastexpress.h
@@ -222,6 +222,11 @@ typedef struct Seq {
 		memset(gap, 0, sizeof(gap));
 		rawSeqData = nullptr;
 	}
+
+	~Seq() {
+		delete[] sprites;
+		sprites = nullptr;
+	}
 } Seq;
 
 typedef struct CharacterCallParams {
@@ -366,13 +371,11 @@ typedef struct Link {
 
 	~Link() {
 		if (lineList) {
-			debug("DELETE LINK LINE");
 			delete lineList;
 			lineList = nullptr;
 		}
 
 		if (next) {
-			debug("DELETE LINK NEXT");
 			delete next;
 			next = nullptr;
 		}
diff --git a/engines/lastexpress/memory.cpp b/engines/lastexpress/memory.cpp
index fa760ac1906..d989c328631 100644
--- a/engines/lastexpress/memory.cpp
+++ b/engines/lastexpress/memory.cpp
@@ -155,6 +155,13 @@ void MemoryManager::freeMem(void *data) {
 void MemoryManager::releaseMemory() {
 	SAFE_FREE(_engine->_globalMemoryPool);
 	SAFE_FREE(_engine->getGraphicsManager()->_backBuffer);
+
+	for (int i = 0; i < _engine->getLogicManager()->_numberOfScenes; i++) {
+		if (_engine->getLogicManager()->_trainData[i].link) {
+			SAFE_DELETE(_engine->getLogicManager()->_trainData[i].link);
+		}
+	}
+
 	SAFE_FREE(_engine->getLogicManager()->_trainData);
 	SAFE_FREE(_engine->_cursorsMemoryPool);
 	SAFE_DELETE(_engine->_characters);
diff --git a/engines/lastexpress/menu/menu.cpp b/engines/lastexpress/menu/menu.cpp
index 1acc7938fb4..66891bd7870 100644
--- a/engines/lastexpress/menu/menu.cpp
+++ b/engines/lastexpress/menu/menu.cpp
@@ -908,6 +908,7 @@ bool Menu::eggCursorAction(int8 action, int8 flags) {
 
 		do {
 			_engine->getSoundManager()->soundThread();
+			_engine->waitForTimer(4);
 		} while (delay > _engine->getSoundFrameCounter());
 
 		return true;
@@ -944,6 +945,7 @@ bool Menu::eggCursorAction(int8 action, int8 flags) {
 
 				do {
 					_engine->getSoundManager()->soundThread();
+					_engine->waitForTimer(4);
 				} while (_engine->getSoundFrameCounter() < delay);
 
 				return true;




More information about the Scummvm-git-logs mailing list