[Scummvm-git-logs] scummvm master -> 25d66b2a08f6a1ad09c7ad7dc9db11ad3a4c76cf
bgK
bastien.bouclet at gmail.com
Sun Sep 24 06:22:04 CEST 2017
This automated email contains information about 13 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
48bf24b41e XEEN: Change SavesManager to use a map of pointers to MemoryWriteStreamDynamic
bc531e3ebf XEEN: Change OutFile not to subclass MemoryWriteStreamDynamic
2832332e74 NETWORKING: Changed NetworkReadStream not to subclass MemoryReadWriteStream
ab1243277a DM: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer
9facbdecda FULLPIPE: Fix leaking the save MemoryWriteStreamDynamic buffer
382df4a7c5 GNAP: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer
c3bff7f25a SWORD1: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer
9c2cfee4e5 SWORD25: Fix leaking the save thumbnail MemoryWriteStreamDynamic
ddac55699d SWORD25: Fix leaking the lua state MemoryWriteStreamDynamic buffer
1b3cc08b75 ZVISION: Fix leaking save / thumbnail MemoryWriteStreamDynamic buffers
3eb82462e7 ALL: Specify the DisposeAfterUse constructor argument for dynamic memory write streams
be67f0d8bf COMMON: Remove DisposeAfterUse default value from dynamic write memory streams
25d66b2a08 Merge pull request #1027 from bgK/memstream-default-arg
Commit: 48bf24b41e0222039e343dca175dcecd768c7e0c
https://github.com/scummvm/scummvm/commit/48bf24b41e0222039e343dca175dcecd768c7e0c
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:05:58+02:00
Commit Message:
XEEN: Change SavesManager to use a map of pointers to MemoryWriteStreamDynamic
Our implementation of HashMap does not allow value types without a
zero-argument constructor.
Changed paths:
engines/xeen/saves.cpp
engines/xeen/saves.h
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp
index 4df4b37..f7d93d1 100644
--- a/engines/xeen/saves.cpp
+++ b/engines/xeen/saves.cpp
@@ -37,10 +37,10 @@ void OutFile::finalize() {
uint16 id = BaseCCArchive::convertNameToId(_filename);
if (!_vm->_saves->_newData.contains(id))
- _vm->_saves->_newData[id] = Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
+ _vm->_saves->_newData[id] = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
- Common::MemoryWriteStreamDynamic &out = _vm->_saves->_newData[id];
- out.write(getData(), size());
+ Common::MemoryWriteStreamDynamic *out = _vm->_saves->_newData[id];
+ out->write(getData(), size());
}
/*------------------------------------------------------------------------*/
@@ -54,6 +54,9 @@ SavesManager::SavesManager(XeenEngine *vm, Party &party) :
}
SavesManager::~SavesManager() {
+ for (Common::HashMap<uint16, Common::MemoryWriteStreamDynamic *>::iterator it = _newData.begin(); it != _newData.end(); it++) {
+ delete (*it)._value;
+ }
delete[] _data;
}
@@ -86,8 +89,8 @@ Common::SeekableReadStream *SavesManager::createReadStreamForMember(const Common
// save manager, then return that new resource
uint16 id = BaseCCArchive::convertNameToId(name);
if (_newData.contains(id)) {
- Common::MemoryWriteStreamDynamic stream = _newData[id];
- return new Common::MemoryReadStream(stream.getData(), stream.size());
+ Common::MemoryWriteStreamDynamic *stream = _newData[id];
+ return new Common::MemoryReadStream(stream->getData(), stream->size());
}
// Retrieve the resource from the loaded savefile
diff --git a/engines/xeen/saves.h b/engines/xeen/saves.h
index 2571c46..404dee0 100644
--- a/engines/xeen/saves.h
+++ b/engines/xeen/saves.h
@@ -60,7 +60,7 @@ private:
XeenEngine *_vm;
Party &_party;
byte *_data;
- Common::HashMap<uint16, Common::MemoryWriteStreamDynamic > _newData;
+ Common::HashMap<uint16, Common::MemoryWriteStreamDynamic *> _newData;
void load(Common::SeekableReadStream *stream);
public:
Commit: bc531e3ebf6e2c3a67a79be4439f32b4989ce808
https://github.com/scummvm/scummvm/commit/bc531e3ebf6e2c3a67a79be4439f32b4989ce808
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:05:59+02:00
Commit Message:
XEEN: Change OutFile not to subclass MemoryWriteStreamDynamic
Also fix leaking the MemoryWriteStreamDynamic buffer storage
Changed paths:
engines/xeen/saves.cpp
engines/xeen/saves.h
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp
index f7d93d1..f9a26b1 100644
--- a/engines/xeen/saves.cpp
+++ b/engines/xeen/saves.cpp
@@ -30,7 +30,17 @@
namespace Xeen {
OutFile::OutFile(XeenEngine *vm, const Common::String filename) :
- _vm(vm), _filename(filename) {
+ _vm(vm),
+ _filename(filename),
+ _backingStream(DisposeAfterUse::YES) {
+}
+
+uint32 OutFile::write(const void *dataPtr, uint32 dataSize) {
+ return _backingStream.write(dataPtr, dataSize);
+}
+
+int32 OutFile::pos() const {
+ return _backingStream.pos();
}
void OutFile::finalize() {
@@ -40,7 +50,7 @@ void OutFile::finalize() {
_vm->_saves->_newData[id] = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Common::MemoryWriteStreamDynamic *out = _vm->_saves->_newData[id];
- out->write(getData(), size());
+ out->write(_backingStream.getData(), _backingStream.size());
}
/*------------------------------------------------------------------------*/
diff --git a/engines/xeen/saves.h b/engines/xeen/saves.h
index 404dee0..9c161c8 100644
--- a/engines/xeen/saves.h
+++ b/engines/xeen/saves.h
@@ -44,14 +44,19 @@ struct XeenSavegameHeader {
class XeenEngine;
class SavesManager;
-class OutFile : public Common::MemoryWriteStreamDynamic {
+class OutFile : public Common::WriteStream {
private:
XeenEngine *_vm;
Common::String _filename;
+ Common::MemoryWriteStreamDynamic _backingStream;
public:
OutFile(XeenEngine *vm, const Common::String filename);
void finalize();
+
+ uint32 write(const void *dataPtr, uint32 dataSize) override;
+
+ int32 pos() const override;
};
class SavesManager: public BaseCCArchive {
Commit: 2832332e74ecd0d166631dd516a98ffcde5b65b3
https://github.com/scummvm/scummvm/commit/2832332e74ecd0d166631dd516a98ffcde5b65b3
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:05:59+02:00
Commit Message:
NETWORKING: Changed NetworkReadStream not to subclass MemoryReadWriteStream
Also fix the MemoryReadWriteStream managed buffer being leaked.
Fixes #9718.
Changed paths:
backends/networking/curl/networkreadstream.cpp
backends/networking/curl/networkreadstream.h
diff --git a/backends/networking/curl/networkreadstream.cpp b/backends/networking/curl/networkreadstream.cpp
index e4fc549..d3859ce 100644
--- a/backends/networking/curl/networkreadstream.cpp
+++ b/backends/networking/curl/networkreadstream.cpp
@@ -29,35 +29,35 @@
namespace Networking {
-static size_t curlDataCallback(char *d, size_t n, size_t l, void *p) {
+size_t NetworkReadStream::curlDataCallback(char *d, size_t n, size_t l, void *p) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
- return stream->write(d, n * l);
+ return stream->_backingStream.write(d, n * l);
return 0;
}
-static size_t curlReadDataCallback(char *d, size_t n, size_t l, void *p) {
+size_t NetworkReadStream::curlReadDataCallback(char *d, size_t n, size_t l, void *p) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
return stream->fillWithSendingContents(d, n * l);
return 0;
}
-static size_t curlHeadersCallback(char *d, size_t n, size_t l, void *p) {
+size_t NetworkReadStream::curlHeadersCallback(char *d, size_t n, size_t l, void *p) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
return stream->addResponseHeaders(d, n * l);
return 0;
}
-static int curlProgressCallback(void *p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) {
+int NetworkReadStream::curlProgressCallback(void *p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) {
NetworkReadStream *stream = (NetworkReadStream *)p;
if (stream)
stream->setProgress(dlnow, dltotal);
return 0;
}
-static int curlProgressCallbackOlder(void *p, double dltotal, double dlnow, double ultotal, double ulnow) {
+int NetworkReadStream::curlProgressCallbackOlder(void *p, double dltotal, double dlnow, double ultotal, double ulnow) {
// for libcurl older than 7.32.0 (CURLOPT_PROGRESSFUNCTION)
return curlProgressCallback(p, (curl_off_t)dltotal, (curl_off_t)dlnow, (curl_off_t)ultotal, (curl_off_t)ulnow);
}
@@ -178,15 +178,18 @@ void NetworkReadStream::init(const char *url, curl_slist *headersList, Common::H
ConnMan.registerEasyHandle(_easy);
}
-NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::String postFields, bool uploading, bool usingPatch) {
+NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::String postFields, bool uploading, bool usingPatch) :
+ _backingStream(DisposeAfterUse::YES) {
init(url, headersList, (const byte *)postFields.c_str(), postFields.size(), uploading, usingPatch, false);
}
-NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::HashMap<Common::String, Common::String> formFields, Common::HashMap<Common::String, Common::String> formFiles) {
+NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, Common::HashMap<Common::String, Common::String> formFields, Common::HashMap<Common::String, Common::String> formFiles) :
+ _backingStream(DisposeAfterUse::YES) {
init(url, headersList, formFields, formFiles);
}
-NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, const byte *buffer, uint32 bufferSize, bool uploading, bool usingPatch, bool post) {
+NetworkReadStream::NetworkReadStream(const char *url, curl_slist *headersList, const byte *buffer, uint32 bufferSize, bool uploading, bool usingPatch, bool post) :
+ _backingStream(DisposeAfterUse::YES) {
init(url, headersList, buffer, bufferSize, uploading, usingPatch, post);
}
@@ -201,7 +204,7 @@ bool NetworkReadStream::eos() const {
}
uint32 NetworkReadStream::read(void *dataPtr, uint32 dataSize) {
- uint32 actuallyRead = MemoryReadWriteStream::read(dataPtr, dataSize);
+ uint32 actuallyRead = _backingStream.read(dataPtr, dataSize);
if (actuallyRead == 0) {
if (_requestComplete)
diff --git a/backends/networking/curl/networkreadstream.h b/backends/networking/curl/networkreadstream.h
index 8e59429..c0ed5ee 100644
--- a/backends/networking/curl/networkreadstream.h
+++ b/backends/networking/curl/networkreadstream.h
@@ -34,8 +34,9 @@ struct curl_slist;
namespace Networking {
-class NetworkReadStream: public Common::MemoryReadWriteStream {
+class NetworkReadStream: public Common::ReadStream {
CURL *_easy;
+ Common::MemoryReadWriteStream _backingStream;
bool _eos, _requestComplete;
const byte *_sendingContentsBuffer;
uint32 _sendingContentsSize;
@@ -46,6 +47,30 @@ class NetworkReadStream: public Common::MemoryReadWriteStream {
void init(const char *url, curl_slist *headersList, const byte *buffer, uint32 bufferSize, bool uploading, bool usingPatch, bool post);
void init(const char *url, curl_slist *headersList, Common::HashMap<Common::String, Common::String> formFields, Common::HashMap<Common::String, Common::String> formFiles);
+ /**
+ * Fills the passed buffer with _sendingContentsBuffer contents.
+ * It works similarly to read(), expect it's not for reading
+ * Stream's contents, but for sending our own data to the server.
+ *
+ * @returns how many bytes were actually read (filled in)
+ */
+ uint32 fillWithSendingContents(char *bufferToFill, uint32 maxSize);
+
+ /**
+ * Remembers headers returned to CURL in server's response.
+ *
+ * @returns how many bytes were actually read
+ */
+ uint32 addResponseHeaders(char *buffer, uint32 bufferSize);
+
+ /** Used in curl progress callback to pass current downloaded/total values. */
+ void setProgress(uint64 downloaded, uint64 total);
+
+ static size_t curlDataCallback(char *d, size_t n, size_t l, void *p);
+ static size_t curlReadDataCallback(char *d, size_t n, size_t l, void *p);
+ static size_t curlHeadersCallback(char *d, size_t n, size_t l, void *p);
+ static int curlProgressCallback(void *p, long dltotal, long dlnow, long ultotal, long ulnow);
+ static int curlProgressCallbackOlder(void *p, double dltotal, double dlnow, double ultotal, double ulnow);
public:
/** Send <postFields>, using POST by default. */
NetworkReadStream(const char *url, curl_slist *headersList, Common::String postFields, bool uploading = false, bool usingPatch = false);
@@ -115,27 +140,8 @@ public:
*/
Common::String responseHeaders() const;
- /**
- * Fills the passed buffer with _sendingContentsBuffer contents.
- * It works similarly to read(), expect it's not for reading
- * Stream's contents, but for sending our own data to the server.
- *
- * @returns how many bytes were actually read (filled in)
- */
- uint32 fillWithSendingContents(char *bufferToFill, uint32 maxSize);
-
- /**
- * Remembers headers returned to CURL in server's response.
- *
- * @returns how many bytes were actually read
- */
- uint32 addResponseHeaders(char *buffer, uint32 bufferSize);
-
/** Returns a number in range [0, 1], where 1 is "complete". */
double getProgress() const;
-
- /** Used in curl progress callback to pass current downloaded/total values. */
- void setProgress(uint64 downloaded, uint64 total);
};
} // End of namespace Networking
Commit: ab1243277ab18ce54720dc734c48520f01274ad9
https://github.com/scummvm/scummvm/commit/ab1243277ab18ce54720dc734c48520f01274ad9
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
DM: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer
Changed paths:
engines/dm/eventman.cpp
diff --git a/engines/dm/eventman.cpp b/engines/dm/eventman.cpp
index 622a7d5..3859fc9 100644
--- a/engines/dm/eventman.cpp
+++ b/engines/dm/eventman.cpp
@@ -782,7 +782,7 @@ void EventManager::processCommandQueue() {
delete _vm->_saveThumbnail;
_vm->_saveThumbnail = nullptr;
} else if (!_vm->_saveThumbnail) {
- _vm->_saveThumbnail = new Common::MemoryWriteStreamDynamic();
+ _vm->_saveThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_vm->_saveThumbnail);
}
Commit: 9facbdecda3f15d2fd9889294ecd4e550050c0a3
https://github.com/scummvm/scummvm/commit/9facbdecda3f15d2fd9889294ecd4e550050c0a3
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
FULLPIPE: Fix leaking the save MemoryWriteStreamDynamic buffer
Changed paths:
engines/fullpipe/statesaver.cpp
diff --git a/engines/fullpipe/statesaver.cpp b/engines/fullpipe/statesaver.cpp
index 7fb56f0..5eb08fe 100644
--- a/engines/fullpipe/statesaver.cpp
+++ b/engines/fullpipe/statesaver.cpp
@@ -55,7 +55,7 @@ bool GameLoader::writeSavegame(Scene *sc, const char *fname) {
header.updateCounter = _updateCounter;
header.unkField = 1;
- Common::MemoryWriteStreamDynamic stream;
+ Common::MemoryWriteStreamDynamic stream(DisposeAfterUse::YES);
MfcArchive *archive = new MfcArchive(&stream);
Commit: 382df4a7c5a15938009dac71e8d0a0fa1559ea54
https://github.com/scummvm/scummvm/commit/382df4a7c5a15938009dac71e8d0a0fa1559ea54
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
GNAP: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer
Changed paths:
engines/gnap/menu.cpp
diff --git a/engines/gnap/menu.cpp b/engines/gnap/menu.cpp
index 2bfe730..9606273 100644
--- a/engines/gnap/menu.cpp
+++ b/engines/gnap/menu.cpp
@@ -211,7 +211,7 @@ void GnapEngine::runMenu() {
_menuDone = false;
delete _tempThumbnail;
- _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_tempThumbnail);
createMenuSprite();
Commit: c3bff7f25a24c549885b8e402fb499b0dd48b9cd
https://github.com/scummvm/scummvm/commit/c3bff7f25a24c549885b8e402fb499b0dd48b9cd
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
SWORD1: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer
Changed paths:
engines/sword1/control.cpp
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp
index fbc3f6a..0c53430 100644
--- a/engines/sword1/control.cpp
+++ b/engines/sword1/control.cpp
@@ -303,7 +303,7 @@ static int volToBalance(int volL, int volR) {
uint8 Control::runPanel() {
// Make a thumbnail of the screen before displaying the menu in case we want to save
// the game from the menu.
- _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_tempThumbnail);
_panelShown = true;
Commit: 9c2cfee4e53f5e678d37b33cdcb354782932b10c
https://github.com/scummvm/scummvm/commit/9c2cfee4e53f5e678d37b33cdcb354782932b10c
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
SWORD25: Fix leaking the save thumbnail MemoryWriteStreamDynamic
Changed paths:
engines/sword25/gfx/screenshot.cpp
diff --git a/engines/sword25/gfx/screenshot.cpp b/engines/sword25/gfx/screenshot.cpp
index eeaece9..c86a2fe 100644
--- a/engines/sword25/gfx/screenshot.cpp
+++ b/engines/sword25/gfx/screenshot.cpp
@@ -113,11 +113,11 @@ Common::SeekableReadStream *Screenshot::createThumbnail(Graphics::Surface *data)
}
// Create a PNG representation of the thumbnail data
- Common::MemoryWriteStreamDynamic *stream = new Common::MemoryWriteStreamDynamic();
- saveToFile(&thumbnail, stream);
+ Common::MemoryWriteStreamDynamic stream(DisposeAfterUse::NO);
+ saveToFile(&thumbnail, &stream);
// Output a MemoryReadStream that encompasses the written data
- Common::SeekableReadStream *result = new Common::MemoryReadStream(stream->getData(), stream->size(),
+ Common::SeekableReadStream *result = new Common::MemoryReadStream(stream.getData(), stream.size(),
DisposeAfterUse::YES);
return result;
}
Commit: ddac55699d69be8c02b724b413fb92d1a93b7257
https://github.com/scummvm/scummvm/commit/ddac55699d69be8c02b724b413fb92d1a93b7257
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
SWORD25: Fix leaking the lua state MemoryWriteStreamDynamic buffer
Changed paths:
engines/sword25/script/luascript.cpp
diff --git a/engines/sword25/script/luascript.cpp b/engines/sword25/script/luascript.cpp
index 3aca667..1a83fc9 100644
--- a/engines/sword25/script/luascript.cpp
+++ b/engines/sword25/script/luascript.cpp
@@ -395,7 +395,7 @@ bool LuaScriptEngine::persist(OutputPersistenceBlock &writer) {
lua_getglobal(_state, "_G");
// Lua persists and stores the data in a WriteStream
- Common::MemoryWriteStreamDynamic writeStream;
+ Common::MemoryWriteStreamDynamic writeStream(DisposeAfterUse::YES);
Lua::persistLua(_state, &writeStream);
// Persistenzdaten in den Writer schreiben.
Commit: 1b3cc08b75c56a06cfa90edaf1b0da181d40ddcc
https://github.com/scummvm/scummvm/commit/1b3cc08b75c56a06cfa90edaf1b0da181d40ddcc
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:20+02:00
Commit Message:
ZVISION: Fix leaking save / thumbnail MemoryWriteStreamDynamic buffers
Changed paths:
engines/zvision/file/save_manager.cpp
diff --git a/engines/zvision/file/save_manager.cpp b/engines/zvision/file/save_manager.cpp
index 8a78e98..4259937 100644
--- a/engines/zvision/file/save_manager.cpp
+++ b/engines/zvision/file/save_manager.cpp
@@ -273,11 +273,11 @@ Common::SeekableReadStream *SaveManager::getSlotFile(uint slot) {
void SaveManager::prepareSaveBuffer() {
delete _tempThumbnail;
- _tempThumbnail = new Common::MemoryWriteStreamDynamic;
+ _tempThumbnail = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
Graphics::saveThumbnail(*_tempThumbnail);
delete _tempSave;
- _tempSave = new Common::MemoryWriteStreamDynamic;
+ _tempSave = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::YES);
_engine->getScriptManager()->serialize(_tempSave);
}
Commit: 3eb82462e772832a902ba336b680e2a961339ee1
https://github.com/scummvm/scummvm/commit/3eb82462e772832a902ba336b680e2a961339ee1
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:21+02:00
Commit Message:
ALL: Specify the DisposeAfterUse constructor argument for dynamic memory write streams
Changed paths:
audio/decoders/quicktime.cpp
audio/midiparser_qt.cpp
engines/agi/sound_midi.cpp
engines/pegasus/ai/ai_area.cpp
engines/scumm/saveload.cpp
diff --git a/audio/decoders/quicktime.cpp b/audio/decoders/quicktime.cpp
index b8eccb6..4b0d5e0 100644
--- a/audio/decoders/quicktime.cpp
+++ b/audio/decoders/quicktime.cpp
@@ -344,7 +344,7 @@ bool QuickTimeAudioDecoder::QuickTimeAudioTrack::isOldDemuxing() const {
AudioStream *QuickTimeAudioDecoder::QuickTimeAudioTrack::readAudioChunk(uint chunk) {
AudioSampleDesc *entry = (AudioSampleDesc *)_parentTrack->sampleDescs[0];
- Common::MemoryWriteStreamDynamic *wStream = new Common::MemoryWriteStreamDynamic();
+ Common::MemoryWriteStreamDynamic *wStream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::NO);
_decoder->_fd->seek(_parentTrack->chunkOffsets[chunk]);
diff --git a/audio/midiparser_qt.cpp b/audio/midiparser_qt.cpp
index 3078be9..8821dbf 100644
--- a/audio/midiparser_qt.cpp
+++ b/audio/midiparser_qt.cpp
@@ -455,7 +455,7 @@ void MidiParser_QT::initCommon() {
byte *MidiParser_QT::readWholeTrack(Common::QuickTimeParser::Track *track, uint32 &trackSize) {
// This just goes through all chunks and appends them together
- Common::MemoryWriteStreamDynamic output;
+ Common::MemoryWriteStreamDynamic output(DisposeAfterUse::NO);
uint32 curSample = 0;
// Read in the note request data first
diff --git a/engines/agi/sound_midi.cpp b/engines/agi/sound_midi.cpp
index 6998df6..97dcc0d 100644
--- a/engines/agi/sound_midi.cpp
+++ b/engines/agi/sound_midi.cpp
@@ -169,7 +169,7 @@ static uint32 convertSND2MIDI(byte *snddata, byte **data) {
int n;
double ll;
- Common::MemoryWriteStreamDynamic st;
+ Common::MemoryWriteStreamDynamic st(DisposeAfterUse::NO);
ll = log10(pow(2.0, 1.0 / 12.0));
diff --git a/engines/pegasus/ai/ai_area.cpp b/engines/pegasus/ai/ai_area.cpp
index c078d5e..58698e6 100644
--- a/engines/pegasus/ai/ai_area.cpp
+++ b/engines/pegasus/ai/ai_area.cpp
@@ -78,7 +78,7 @@ void AIArea::saveAIState() {
delete vm->_aiSaveStream;
- Common::MemoryWriteStreamDynamic out;
+ Common::MemoryWriteStreamDynamic out(DisposeAfterUse::NO);
writeAIRules(&out);
vm->_aiSaveStream = new Common::MemoryReadStream(out.getData(), out.size(), DisposeAfterUse::YES);
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 0ab36d1..06d5646 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -228,7 +228,7 @@ void ScummEngine_v4::prepareSavegame() {
_savePreparedSavegame = NULL;
// store headerless savegame in a compressed memory stream
- memStream = new Common::MemoryWriteStreamDynamic();
+ memStream = new Common::MemoryWriteStreamDynamic(DisposeAfterUse::NO);
writeStream = Common::wrapCompressedWriteStream(memStream);
if (saveState(writeStream, false)) {
// we have to finalize the compression-stream first, otherwise the internal
Commit: be67f0d8bfb4148e014931cce63b52e84ed95ee6
https://github.com/scummvm/scummvm/commit/be67f0d8bfb4148e014931cce63b52e84ed95ee6
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-22T07:06:21+02:00
Commit Message:
COMMON: Remove DisposeAfterUse default value from dynamic write memory streams
The default value was DisposeAfterUse::NO, which made it very easy to
accidentally leak memory by omitting to specify a value.
Changed paths:
common/memstream.h
diff --git a/common/memstream.h b/common/memstream.h
index 0338d35..f6bf990 100644
--- a/common/memstream.h
+++ b/common/memstream.h
@@ -184,7 +184,7 @@ protected:
_size = new_len;
}
public:
- MemoryWriteStreamDynamic(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : _capacity(0), _size(0), _ptr(0), _data(0), _pos(0), _disposeMemory(disposeMemory) {}
+ explicit MemoryWriteStreamDynamic(DisposeAfterUse::Flag disposeMemory) : _capacity(0), _size(0), _ptr(0), _data(0), _pos(0), _disposeMemory(disposeMemory) {}
~MemoryWriteStreamDynamic() {
if (_disposeMemory)
@@ -247,7 +247,7 @@ private:
}
}
public:
- MemoryReadWriteStream(DisposeAfterUse::Flag disposeMemory = DisposeAfterUse::NO) : _capacity(0), _size(0), _data(0), _writePos(0), _readPos(0), _pos(0), _length(0), _disposeMemory(disposeMemory), _eos(false) {}
+ explicit MemoryReadWriteStream(DisposeAfterUse::Flag disposeMemory) : _capacity(0), _size(0), _data(0), _writePos(0), _readPos(0), _pos(0), _length(0), _disposeMemory(disposeMemory), _eos(false) {}
~MemoryReadWriteStream() {
if (_disposeMemory)
Commit: 25d66b2a08f6a1ad09c7ad7dc9db11ad3a4c76cf
https://github.com/scummvm/scummvm/commit/25d66b2a08f6a1ad09c7ad7dc9db11ad3a4c76cf
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-09-24T06:21:54+02:00
Commit Message:
Merge pull request #1027 from bgK/memstream-default-arg
COMMON: Remove the DisposeAfterUse default value from dynamic write memory streams constructors
Changed paths:
audio/decoders/quicktime.cpp
audio/midiparser_qt.cpp
backends/networking/curl/networkreadstream.cpp
backends/networking/curl/networkreadstream.h
common/memstream.h
engines/agi/sound_midi.cpp
engines/dm/eventman.cpp
engines/fullpipe/statesaver.cpp
engines/gnap/menu.cpp
engines/pegasus/ai/ai_area.cpp
engines/scumm/saveload.cpp
engines/sword1/control.cpp
engines/sword25/gfx/screenshot.cpp
engines/sword25/script/luascript.cpp
engines/xeen/saves.cpp
engines/xeen/saves.h
engines/zvision/file/save_manager.cpp
More information about the Scummvm-git-logs
mailing list