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

sluicebox noreply at scummvm.org
Thu Nov 2 19:05:08 UTC 2023


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

Summary:
953a7226e7 SAGA: Fix memory leak on error
43db6fad0d WINTERMUTE: Add newline at EOF
b1688d0a47 WINTERMUTE: Fix debugger error handling


Commit: 953a7226e74d90589c7db06ba11f6c6df5e7be11
    https://github.com/scummvm/scummvm/commit/953a7226e74d90589c7db06ba11f6c6df5e7be11
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-11-02T12:01:25-07:00

Commit Message:
SAGA: Fix memory leak on error

Coverity CID 1501495

Changed paths:
    engines/saga/image.cpp


diff --git a/engines/saga/image.cpp b/engines/saga/image.cpp
index 855091e414d..d4277061617 100644
--- a/engines/saga/image.cpp
+++ b/engines/saga/image.cpp
@@ -139,6 +139,7 @@ bool SagaEngine::decodeBGImage(const ByteArray &imageData, ByteArray &outputBuff
 			byte *uncompressed = Common::PowerPackerStream::unpackBuffer(RLE_data_ptr + 4, RLE_data_len - 4, uncompressed_len);
 			if (uncompressed == nullptr || (int) uncompressed_len != pitch * hdr.height) {
 				warning("Uncompressed size mismatch: %d vs %d", uncompressed_len, pitch * hdr.height);
+				delete[] uncompressed;
 				return false;
 			}
 			if (isAGA() && pitch == hdr.width) {
@@ -149,8 +150,10 @@ bool SagaEngine::decodeBGImage(const ByteArray &imageData, ByteArray &outputBuff
 				for (int y = 0; y < hdr.height; y++)
 					memcpy(outputBuffer.getBuffer() + y * hdr.width, uncompressed + y * pitch, hdr.width);
 			} else {
-				if (!unbankAmiga(outputBuffer, uncompressed, uncompressed_len, hdr.height, hdr.width, bitnum))
+				if (!unbankAmiga(outputBuffer, uncompressed, uncompressed_len, hdr.height, hdr.width, bitnum)) {
+					delete[] uncompressed;
 					return false;
+				}
 			}
 			delete[] uncompressed;
 		} else {


Commit: 43db6fad0d8ba794f0df5012685c41625767da17
    https://github.com/scummvm/scummvm/commit/43db6fad0d8ba794f0df5012685c41625767da17
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-11-02T12:01:26-07:00

Commit Message:
WINTERMUTE: Add newline at EOF

Changed paths:
    engines/wintermute/ext/scene_hooks.h


diff --git a/engines/wintermute/ext/scene_hooks.h b/engines/wintermute/ext/scene_hooks.h
index f185c02b972..8b68f2aca56 100644
--- a/engines/wintermute/ext/scene_hooks.h
+++ b/engines/wintermute/ext/scene_hooks.h
@@ -39,4 +39,4 @@ void EmulateSceneHook(const char *sceneFilename) {
 
 } // End of namespace Wintermute
 
-#endif
\ No newline at end of file
+#endif


Commit: b1688d0a47a84909e4af0b479c6014a90f4e026a
    https://github.com/scummvm/scummvm/commit/b1688d0a47a84909e4af0b479c6014a90f4e026a
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-11-02T12:01:26-07:00

Commit Message:
WINTERMUTE: Fix debugger error handling

This was detected as a memory leak, but first this code
attempted to delete a stack-allocated object.

Coverity CID 1360370

Changed paths:
    engines/wintermute/debugger.cpp
    engines/wintermute/debugger/debugger_controller.cpp
    engines/wintermute/debugger/debugger_controller.h


diff --git a/engines/wintermute/debugger.cpp b/engines/wintermute/debugger.cpp
index 999d17b0941..08bf7df0291 100644
--- a/engines/wintermute/debugger.cpp
+++ b/engines/wintermute/debugger.cpp
@@ -259,13 +259,14 @@ bool Console::Cmd_List(int argc, const char **argv) {
 
 bool Console::Cmd_Print(int argc, const char **argv) {
 	if (argc == 2) {
-		Error error = Error(SUCCESS, OK, 0);
+		Error *error = nullptr;
 		Common::String temp = CONTROLLER->readValue(argv[1], &error);
-		if (error.getErrorLevel() == SUCCESS) {
+		if (error == nullptr) {
 			debugPrintf("%s = %s \n", argv[1], temp.c_str());
 			return true;
 		} else {
-			printError(argv[0], error);
+			printError(argv[0], *error);
+			delete error;
 			return true;
 		}
 	} else {
diff --git a/engines/wintermute/debugger/debugger_controller.cpp b/engines/wintermute/debugger/debugger_controller.cpp
index 100e2bc8c1f..d69469b6ce8 100644
--- a/engines/wintermute/debugger/debugger_controller.cpp
+++ b/engines/wintermute/debugger/debugger_controller.cpp
@@ -190,10 +190,9 @@ void DebuggerController::clear() {
 	_lastLine = 0xFFFFFFFF; // Invalid
 }
 
-Common::String DebuggerController::readValue(const Common::String &name, Error *error) {
+Common::String DebuggerController::readValue(const Common::String &name, Error **error) {
 	if (!_lastScript) {
-		delete error;
-		error = new Error(ERROR, NOT_ALLOWED);
+		*error = new Error(ERROR, NOT_ALLOWED);
 		return Common::String();
 	}
 	char cstr[256]; // TODO not pretty
diff --git a/engines/wintermute/debugger/debugger_controller.h b/engines/wintermute/debugger/debugger_controller.h
index bfa08d058c7..225cfd27aeb 100644
--- a/engines/wintermute/debugger/debugger_controller.h
+++ b/engines/wintermute/debugger/debugger_controller.h
@@ -96,7 +96,7 @@ public:
 	/**
 	 * @brief read value for a variable accessible from within the current scope.
 	 */
-	Common::String readValue(const Common::String &name, Error *error);
+	Common::String readValue(const Common::String &name, Error **error);
 	/**
 	 * @brief set value for a variable accessible from within the current scope.
 	 */




More information about the Scummvm-git-logs mailing list