aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Bouclet2017-09-20 19:27:03 +0200
committerBastien Bouclet2017-09-22 07:05:59 +0200
commitbc531e3ebf6e2c3a67a79be4439f32b4989ce808 (patch)
treea580eab3421b67666ffa020b4e1015805acecda3
parent48bf24b41e0222039e343dca175dcecd768c7e0c (diff)
downloadscummvm-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
-rw-r--r--engines/xeen/saves.cpp14
-rw-r--r--engines/xeen/saves.h7
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 {