diff options
author | Peter Kohaut | 2019-03-04 22:55:31 +0100 |
---|---|---|
committer | Peter Kohaut | 2019-03-04 22:55:31 +0100 |
commit | 45a27decf3fd3205e856d9b346f29060307dc6dc (patch) | |
tree | dc58f1d94617c0fc7371ed317bed993ca5c74c58 /engines/bladerunner/savefile.cpp | |
parent | 213e6b52c8861a128dc25b036ff9583314615785 (diff) | |
download | scummvm-rg350-45a27decf3fd3205e856d9b346f29060307dc6dc.tar.gz scummvm-rg350-45a27decf3fd3205e856d9b346f29060307dc6dc.tar.bz2 scummvm-rg350-45a27decf3fd3205e856d9b346f29060307dc6dc.zip |
BLADERUNNER: Fixed overflow in savegame name
Diffstat (limited to 'engines/bladerunner/savefile.cpp')
-rw-r--r-- | engines/bladerunner/savefile.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/engines/bladerunner/savefile.cpp b/engines/bladerunner/savefile.cpp index ed6217925b..b556b81756 100644 --- a/engines/bladerunner/savefile.cpp +++ b/engines/bladerunner/savefile.cpp @@ -182,10 +182,12 @@ void SaveFileWriteStream::writeBool(bool v) { writeUint32LE(v); } -void SaveFileWriteStream::writeStringSz(const Common::String &s, int sz) { - assert(s.size() < (uint)sz); - write(s.begin(), s.size()); - padBytes((uint)sz - s.size()); +void SaveFileWriteStream::writeStringSz(const Common::String &s, uint sz) { + uint32 sizeToWrite = MIN(sz, s.size()); + write(s.begin(), sizeToWrite); + if (sizeToWrite < sz) { + padBytes(sz - sizeToWrite); + } } void SaveFileWriteStream::writeVector2(const Vector2 &v) { @@ -238,10 +240,10 @@ bool SaveFileReadStream::readBool() { return readUint32LE(); } -Common::String SaveFileReadStream::readStringSz(int sz) { +Common::String SaveFileReadStream::readStringSz(uint sz) { char *buf = new char[sz]; read(buf, sz); - Common::String result = buf; + Common::String result(buf, sz); delete[] buf; return result; } |