diff options
author | Strangerke | 2015-12-21 19:09:45 +0100 |
---|---|---|
committer | Willem Jan Palenstijn | 2015-12-23 21:35:33 +0100 |
commit | df05be466e0e1e11e922dac643ebe8196d05f691 (patch) | |
tree | cf21bb2ad075e8cb777a9d16e918b2a6a75e3018 | |
parent | 137e12bf95b26dbffa4bc3a29891dd6cfd46935a (diff) | |
download | scummvm-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.cpp | 13 |
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) { |