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

sluicebox noreply at scummvm.org
Mon Oct 30 20:11:29 UTC 2023


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

Summary:
c319791519 SCUMM: Fix memory leak in changeSavegameName. PVS-Studio V773


Commit: c319791519bf9182082a8b9f0d3975d3feb5c527
    https://github.com/scummvm/scummvm/commit/c319791519bf9182082a8b9f0d3975d3feb5c527
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-10-30T13:11:17-07:00

Commit Message:
SCUMM: Fix memory leak in changeSavegameName. PVS-Studio V773

Changed paths:
    engines/scumm/saveload.cpp


diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 606facdaed5..177d5341e60 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -1273,6 +1273,7 @@ bool ScummEngine::changeSavegameName(int slot, char *newName) {
 		if (in->err()) {
 			warning("ScummEngine::changeSavegameName(): Error in input file stream, aborting...");
 			delete in;
+			free(saveBuffer);
 			return false;
 		}
 	}
@@ -1280,18 +1281,21 @@ bool ScummEngine::changeSavegameName(int slot, char *newName) {
 	delete in;
 
 	Common::WriteStream *out = openSaveFileForWriting(slot, false, filename);
-	saveSaveGameHeader(out, hdr);
 
 	if (!out) {
 		warning("ScummEngine::changeSavegameName(): Couldn't open output file, aborting...");
+		free(saveBuffer);
 		return false;
 	}
 
+	saveSaveGameHeader(out, hdr);
+
 	for (uint i = 0; i < (uint)bufferSizeNoHdr; i++) {
 		out->writeByte(saveBuffer[i]);
 
 		if (out->err()) {
 			warning("ScummEngine::changeSavegameName(): Error in output file stream, aborting...");
+			free(saveBuffer);
 			delete out;
 			return false;
 		}
@@ -1301,10 +1305,12 @@ bool ScummEngine::changeSavegameName(int slot, char *newName) {
 
 	if (out->err()) {
 		warning("ScummEngine::changeSavegameName(): Error in output file stream after finalizing...");
+		free(saveBuffer);
 		delete out;
 		return false;
 	}
 
+	free(saveBuffer);
 	delete out;
 
 	return true;




More information about the Scummvm-git-logs mailing list