aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2015-12-21 19:09:45 +0100
committerWillem Jan Palenstijn2015-12-23 21:35:33 +0100
commitdf05be466e0e1e11e922dac643ebe8196d05f691 (patch)
treecf21bb2ad075e8cb777a9d16e918b2a6a75e3018
parent137e12bf95b26dbffa4bc3a29891dd6cfd46935a (diff)
downloadscummvm-rg350-df05be466e0e1e11e922dac643ebe8196d05f691.tar.gz
scummvm-rg350-df05be466e0e1e11e922dac643ebe8196d05f691.tar.bz2
scummvm-rg350-df05be466e0e1e11e922dac643ebe8196d05f691.zip
LAB: Fix readString when encrypted strings are stored with a wrong size and multiple \0
-rw-r--r--engines/lab/resource.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/engines/lab/resource.cpp b/engines/lab/resource.cpp
index b5ecb0b2bc..6142878afb 100644
--- a/engines/lab/resource.cpp
+++ b/engines/lab/resource.cpp
@@ -226,18 +226,19 @@ Common::File *Resource::openDataFile(const Common::String fileName, uint32 fileH
Common::String Resource::readString(Common::File *file) {
byte size = file->readByte();
if (!size)
- return nullptr;
+ return Common::String("");
- Common::String str;
- char c;
+ char *str = new char[size];
for (int i = 0; i < size; i++) {
- c = file->readByte();
+ char c = file->readByte();
// Decrypt char
c = (i < size - 1) ? c - 95 : '\0';
- str += c;
+ str[i] = c;
}
- return str;
+ Common::String result = str;
+ delete str;
+ return result;
}
int16 *Resource::readConditions(Common::File *file) {