[Scummvm-cvs-logs] SF.net SVN: scummvm: [28487] scummvm/trunk/engines/gob
drmccoy at users.sourceforge.net
drmccoy at users.sourceforge.net
Tue Aug 7 22:43:41 CEST 2007
Revision: 28487
http://scummvm.svn.sourceforge.net/scummvm/?rev=28487&view=rev
Author: drmccoy
Date: 2007-08-07 13:43:41 -0700 (Tue, 07 Aug 2007)
Log Message:
-----------
Fixing my leak fix...
Modified Paths:
--------------
scummvm/trunk/engines/gob/saveload.cpp
scummvm/trunk/engines/gob/saveload.h
scummvm/trunk/engines/gob/saveload_v2.cpp
scummvm/trunk/engines/gob/saveload_v3.cpp
Modified: scummvm/trunk/engines/gob/saveload.cpp
===================================================================
--- scummvm/trunk/engines/gob/saveload.cpp 2007-08-07 18:51:34 UTC (rev 28486)
+++ scummvm/trunk/engines/gob/saveload.cpp 2007-08-07 20:43:41 UTC (rev 28487)
@@ -62,9 +62,11 @@
}
SaveLoad::~SaveLoad() {
- for (int i = 0; i < _stagesCount; i++)
- delete[] _buffer[i];
- delete[] _buffer;
+ if (_buffer) {
+ for (int i = 0; i < _stagesCount; i++)
+ delete[] _buffer[i];
+ delete[] _buffer;
+ }
delete _tempSprite;
Modified: scummvm/trunk/engines/gob/saveload.h
===================================================================
--- scummvm/trunk/engines/gob/saveload.h 2007-08-07 18:51:34 UTC (rev 28486)
+++ scummvm/trunk/engines/gob/saveload.h 2007-08-07 20:43:41 UTC (rev 28487)
@@ -116,7 +116,7 @@
virtual SaveType getSaveType(const char *fileName);
SaveLoad_v2(GobEngine *vm, const char *targetName);
- virtual ~SaveLoad_v2();
+ virtual ~SaveLoad_v2() {}
protected:
virtual uint32 getSaveGameSize();
@@ -130,6 +130,8 @@
virtual bool saveGame(int16 dataVar, int32 size, int32 offset);
virtual bool saveNotes(int16 dataVar, int32 size, int32 offset);
virtual bool saveScreenshot(int16 dataVar, int32 size, int32 offset);
+
+ void initBuffer();
};
class SaveLoad_v3 : public SaveLoad_v2 {
@@ -160,6 +162,7 @@
virtual bool saveScreenshot(int16 dataVar, int32 size, int32 offset);
bool saveGame(int32 screenshotSize);
+ void initBuffer();
};
} // End of namespace Gob
Modified: scummvm/trunk/engines/gob/saveload_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/saveload_v2.cpp 2007-08-07 18:51:34 UTC (rev 28486)
+++ scummvm/trunk/engines/gob/saveload_v2.cpp 2007-08-07 20:43:41 UTC (rev 28487)
@@ -38,18 +38,8 @@
SaveLoad(vm, targetName) {
_stagesCount = 1;
-
- _buffer = new byte*[_stagesCount];
-
- assert(_buffer);
-
- _buffer[0] = 0;
}
-SaveLoad_v2::~SaveLoad_v2() {
- delete[] _buffer;
-}
-
SaveType SaveLoad_v2::getSaveType(const char *fileName) {
const char *backSlash;
if ((backSlash = strrchr(fileName, '\\')))
@@ -194,6 +184,8 @@
bool SaveLoad_v2::saveGame(int16 dataVar, int32 size, int32 offset) {
int32 varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
+ initBuffer();
+
if (size == 0) {
dataVar = 0;
size = varSize;
@@ -293,4 +285,13 @@
return false;
}
+void SaveLoad_v2::initBuffer() {
+ if (_buffer)
+ return;
+
+ _buffer = new byte*[_stagesCount];
+ assert(_buffer);
+ _buffer[0] = 0;
+}
+
} // End of namespace Gob
Modified: scummvm/trunk/engines/gob/saveload_v3.cpp
===================================================================
--- scummvm/trunk/engines/gob/saveload_v3.cpp 2007-08-07 18:51:34 UTC (rev 28486)
+++ scummvm/trunk/engines/gob/saveload_v3.cpp 2007-08-07 20:43:41 UTC (rev 28487)
@@ -45,19 +45,6 @@
_saveSlot = -1;
_stagesCount = 3;
- _buffer = new byte*[_stagesCount];
-
- assert(_buffer);
-
- _buffer[0] = new byte[1000];
- _buffer[1] = new byte[1200];
- _buffer[2] = 0;
-
- assert(_buffer[0] && _buffer[1]);
-
- memset(_buffer[0], 0, 1000);
- memset(_buffer[1], 0, 1200);
-
_useScreenshots = false;
_firstSizeGame = true;
}
@@ -146,6 +133,8 @@
int slot = (offset - 1700) / varSize;
int slotR = (offset - 1700) % varSize;
+ initBuffer();
+
if ((size > 0) && (offset < 500) && ((size + offset) <= 500)) {
memcpy(_vm->_global->_inter_variables + dataVar,
@@ -279,6 +268,8 @@
int slot = (offset - 1700) / varSize;
int slotR = (offset - 1700) % varSize;
+ initBuffer();
+
if ((size > 0) && (offset < 500) && ((size + offset) <= 500)) {
memcpy(_buffer[0] + offset,
@@ -360,6 +351,8 @@
_saveSlot = -1;
+ initBuffer();
+
if ((slot < 0) || (slot > 29)) {
warning("Can't save to slot %d: Out of range", slot);
delete[] _buffer[2];
@@ -433,4 +426,22 @@
return true;
}
+void SaveLoad_v3::initBuffer() {
+ if (_buffer)
+ return;
+
+ _buffer = new byte*[_stagesCount];
+
+ assert(_buffer);
+
+ _buffer[0] = new byte[1000];
+ _buffer[1] = new byte[1200];
+ _buffer[2] = 0;
+
+ assert(_buffer[0] && _buffer[1]);
+
+ memset(_buffer[0], 0, 1000);
+ memset(_buffer[1], 0, 1200);
+}
+
} // End of namespace Gob
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list