[Scummvm-git-logs] scummvm master -> 45a27decf3fd3205e856d9b346f29060307dc6dc
peterkohaut
peterkohaut at users.noreply.github.com
Mon Mar 4 23:03:48 CET 2019
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
45a27decf3 BLADERUNNER: Fixed overflow in savegame name
Commit: 45a27decf3fd3205e856d9b346f29060307dc6dc
https://github.com/scummvm/scummvm/commit/45a27decf3fd3205e856d9b346f29060307dc6dc
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-03-04T22:55:31+01:00
Commit Message:
BLADERUNNER: Fixed overflow in savegame name
Changed paths:
engines/bladerunner/savefile.cpp
engines/bladerunner/savefile.h
engines/bladerunner/ui/kia_section_save.cpp
diff --git a/engines/bladerunner/savefile.cpp b/engines/bladerunner/savefile.cpp
index ed62179..b556b81 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;
}
diff --git a/engines/bladerunner/savefile.h b/engines/bladerunner/savefile.h
index 32b1fc1..529be37 100644
--- a/engines/bladerunner/savefile.h
+++ b/engines/bladerunner/savefile.h
@@ -60,9 +60,9 @@ class SaveFileManager {
private:
static const uint32 kTag = MKTAG('B', 'R', 'S', 'V');
static const uint32 kVersion = 1;
- static const uint32 kNameLength = 32;
public:
+ static const uint32 kNameLength = 32;
static const uint32 kThumbnailSize = 9600; // 80x60x16bpp
static SaveStateList list(const Common::String &target);
@@ -96,7 +96,7 @@ public:
void writeInt(int v);
void writeFloat(float v);
void writeBool(bool v);
- void writeStringSz(const Common::String &s, int sz);
+ void writeStringSz(const Common::String &s, uint sz);
void writeVector2(const Vector2 &v);
void writeVector3(const Vector3 &v);
void writeRect(const Common::Rect &v);
@@ -119,7 +119,7 @@ public:
int readInt();
float readFloat();
bool readBool();
- Common::String readStringSz(int sz);
+ Common::String readStringSz(uint sz);
Vector2 readVector2();
Vector3 readVector3();
Common::Rect readRect();
diff --git a/engines/bladerunner/ui/kia_section_save.cpp b/engines/bladerunner/ui/kia_section_save.cpp
index 0dbd603..f72254b 100644
--- a/engines/bladerunner/ui/kia_section_save.cpp
+++ b/engines/bladerunner/ui/kia_section_save.cpp
@@ -48,7 +48,7 @@ KIASectionSave::KIASectionSave(BladeRunnerEngine *vm) : KIASectionBase(vm) {
_scrollBox = new UIScrollBox(_vm, scrollBoxCallback, this, 1024, 0, true, Common::Rect(155, 158, 461, 346), Common::Rect(506, 160, 506, 350));
_uiContainer->add(_scrollBox);
- _inputBox = new UIInputBox(_vm, inputBoxCallback, this, Common::Rect(155, 367, 461, 376), 41, "");
+ _inputBox = new UIInputBox(_vm, inputBoxCallback, this, Common::Rect(155, 367, 461, 376), SaveFileManager::kNameLength, ""); // original game had limit 41 characters
_uiContainer->add(_inputBox);
_inputBox->hide();
More information about the Scummvm-git-logs
mailing list