diff options
author | Bastien Bouclet | 2017-09-20 19:27:03 +0200 |
---|---|---|
committer | Bastien Bouclet | 2017-09-22 07:05:59 +0200 |
commit | bc531e3ebf6e2c3a67a79be4439f32b4989ce808 (patch) | |
tree | a580eab3421b67666ffa020b4e1015805acecda3 /engines | |
parent | 48bf24b41e0222039e343dca175dcecd768c7e0c (diff) | |
download | scummvm-rg350-bc531e3ebf6e2c3a67a79be4439f32b4989ce808.tar.gz scummvm-rg350-bc531e3ebf6e2c3a67a79be4439f32b4989ce808.tar.bz2 scummvm-rg350-bc531e3ebf6e2c3a67a79be4439f32b4989ce808.zip |
XEEN: Change OutFile not to subclass MemoryWriteStreamDynamic
Also fix leaking the MemoryWriteStreamDynamic buffer storage
Diffstat (limited to 'engines')
-rw-r--r-- | engines/xeen/saves.cpp | 14 | ||||
-rw-r--r-- | engines/xeen/saves.h | 7 |
2 files changed, 18 insertions, 3 deletions
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp index f7d93d1dc4..f9a26b1d6b 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 404dee00a7..9c161c838c 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 { |