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

mgerhardy martin.gerhardy at gmail.com
Tue Nov 17 19:59:52 UTC 2020


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

Summary:
2a42cae807 TWINE: fixed double free
178bfb577d TWINE: removed unused return value
d88dd72705 TWINE: make looping sound
f7552d1cd1 TWINE: fixed more memory leaks


Commit: 2a42cae80734596b12319a6c72e225c3a0306ff6
    https://github.com/scummvm/scummvm/commit/2a42cae80734596b12319a6c72e225c3a0306ff6
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-17T20:59:28+01:00

Commit Message:
TWINE: fixed double free

Changed paths:
    engines/twine/actor.cpp


diff --git a/engines/twine/actor.cpp b/engines/twine/actor.cpp
index 82bf875696..f605a5d9cf 100644
--- a/engines/twine/actor.cpp
+++ b/engines/twine/actor.cpp
@@ -211,9 +211,6 @@ int32 Actor::initBody(int32 bodyIdx, int32 actorIdx, ActorBoundingBox &actorBoun
 				if (!(bodyIndex & 0x8000)) {
 					index = currentPositionInBodyPtrTab;
 					currentPositionInBodyPtrTab++;
-					if (bodyTable[index]) {
-						free(bodyTable[index]);
-					}
 					bodyTableSize[index] = HQR::getAllocEntry(&bodyTable[index], Resources::HQR_BODY_FILE, bodyIndex & 0xFFFF);
 					if (bodyTableSize[index] == 0) {
 						error("HQR ERROR: Loading body entities");


Commit: 178bfb577dabe641843b79df501208787cb65d85
    https://github.com/scummvm/scummvm/commit/178bfb577dabe641843b79df501208787cb65d85
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-17T20:59:28+01:00

Commit Message:
TWINE: removed unused return value

Changed paths:
    engines/twine/grid.cpp
    engines/twine/grid.h


diff --git a/engines/twine/grid.cpp b/engines/twine/grid.cpp
index 040d1047ec..512e9d37bb 100644
--- a/engines/twine/grid.cpp
+++ b/engines/twine/grid.cpp
@@ -268,7 +268,7 @@ void Grid::getSpriteSize(int32 offset, int32 *width, int32 *height, const uint8
 	*height = *(spritePtr + 1);
 }
 
-int32 Grid::loadGridBricks(int32 gridSize) {
+void Grid::loadGridBricks(int32 gridSize) {
 	uint32 firstBrick = 60000;
 	uint32 lastBrick = 0;
 	uint32 currentBllEntryIdx = 0;
@@ -303,11 +303,13 @@ int32 Grid::loadGridBricks(int32 gridSize) {
 				if (brickIdx) {
 					brickIdx--;
 
-					if (brickIdx <= firstBrick)
+					if (brickIdx <= firstBrick) {
 						firstBrick = brickIdx;
+					}
 
-					if (brickIdx > lastBrick)
+					if (brickIdx > lastBrick) {
 						lastBrick = brickIdx;
+					}
 
 					brickUsageTable[brickIdx] = 1;
 				}
@@ -326,8 +328,6 @@ int32 Grid::loadGridBricks(int32 gridSize) {
 			warning("Failed to load isometric brick index %i", i);
 		}
 	}
-
-	return 1;
 }
 
 void Grid::createGridColumn(const uint8 *gridEntry, uint32 gridEntrySize, uint8 *dest, uint32 destSize) {
diff --git a/engines/twine/grid.h b/engines/twine/grid.h
index a133cd519c..65c2467839 100644
--- a/engines/twine/grid.h
+++ b/engines/twine/grid.h
@@ -116,7 +116,7 @@ private:
 	 * @param gridSize size of the current grid
 	 * @return true if everything went ok
 	 */
-	int32 loadGridBricks(int32 gridSize);
+	void loadGridBricks(int32 gridSize);
 	/** Create grid masks to allow display actors over the bricks */
 	void createGridMask();
 	/**


Commit: d88dd727054fdbcdd48803a2e7f6292a80d2e0a2
    https://github.com/scummvm/scummvm/commit/d88dd727054fdbcdd48803a2e7f6292a80d2e0a2
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-17T20:59:28+01:00

Commit Message:
TWINE: make looping sound

Changed paths:
    engines/twine/sound.cpp


diff --git a/engines/twine/sound.cpp b/engines/twine/sound.cpp
index b026b2a7bd..2b501ee3dd 100644
--- a/engines/twine/sound.cpp
+++ b/engines/twine/sound.cpp
@@ -137,7 +137,7 @@ bool Sound::playSample(int channelIdx, int index, uint8 *sampPtr, int32 sampSize
 		delete stream;
 		return false;
 	}
-	_engine->_system->getMixer()->playStream(soundType, &samplesPlaying[channelIdx], audioStream, index);
+	_engine->_system->getMixer()->playStream(soundType, &samplesPlaying[channelIdx], Audio::makeLoopingAudioStream(audioStream, loop), index);
 	return true;
 }
 


Commit: f7552d1cd13f72ba864a464568fd362ca0216b84
    https://github.com/scummvm/scummvm/commit/f7552d1cd13f72ba864a464568fd362ca0216b84
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-17T20:59:28+01:00

Commit Message:
TWINE: fixed more memory leaks

Changed paths:
    engines/twine/gamestate.cpp
    engines/twine/grid.cpp
    engines/twine/scene.cpp
    engines/twine/twine.cpp


diff --git a/engines/twine/gamestate.cpp b/engines/twine/gamestate.cpp
index 936200969b..a4ce949f1c 100644
--- a/engines/twine/gamestate.cpp
+++ b/engines/twine/gamestate.cpp
@@ -453,6 +453,7 @@ void GameState::processGameoverAnimation() {
 	while (!_engine->_input->toggleAbortAction() && (_engine->lbaTime - startLbaTime) <= 500) {
 		_engine->readKeys();
 		if (_engine->shouldQuit()) {
+			free(gameOverPtr);
 			return;
 		}
 
diff --git a/engines/twine/grid.cpp b/engines/twine/grid.cpp
index 512e9d37bb..e3fea56e5f 100644
--- a/engines/twine/grid.cpp
+++ b/engines/twine/grid.cpp
@@ -273,7 +273,6 @@ void Grid::loadGridBricks(int32 gridSize) {
 	uint32 lastBrick = 0;
 	uint32 currentBllEntryIdx = 0;
 
-	memset(brickTable, 0, sizeof(brickTable));
 	memset(brickSizeTable, 0, sizeof(brickSizeTable));
 	memset(brickUsageTable, 0, sizeof(brickUsageTable));
 
@@ -321,6 +320,8 @@ void Grid::loadGridBricks(int32 gridSize) {
 
 	for (uint32 i = firstBrick; i <= lastBrick; i++) {
 		if (!brickUsageTable[i]) {
+			free(brickTable[i]);
+			brickTable[i] = nullptr;
 			continue;
 		}
 		brickSizeTable[i] = HQR::getAllocEntry(&brickTable[i], Resources::HQR_LBA_BRK_FILE, i);
diff --git a/engines/twine/scene.cpp b/engines/twine/scene.cpp
index 61fa22f426..41cdb7af15 100644
--- a/engines/twine/scene.cpp
+++ b/engines/twine/scene.cpp
@@ -555,6 +555,7 @@ void Scene::processActorZones(int32 actorIdx) {
 }
 
 void Scene::stopRunningGame() {
+	free(currentScene);
 	currentScene = nullptr;
 }
 
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index e971a65b73..c725190861 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -795,6 +795,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 								_scene->newHeroY = -1;
 								_scene->newHeroZ = -1;
 								_scene->currentSceneIdx = _scene->previousSceneIdx;
+								_scene->stopRunningGame();
 							}
 
 							autoSave();




More information about the Scummvm-git-logs mailing list