[Scummvm-git-logs] scummvm master -> e4d12140a49364e380fef1ed883103c67fa28371
bluegr
noreply at scummvm.org
Mon Jul 29 22:46:36 UTC 2024
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:
e4d12140a4 ADL: Fix string concatenation warnings
Commit: e4d12140a49364e380fef1ed883103c67fa28371
https://github.com/scummvm/scummvm/commit/e4d12140a49364e380fef1ed883103c67fa28371
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2024-07-30T01:46:33+03:00
Commit Message:
ADL: Fix string concatenation warnings
Instead of storing the encrypted string (which may contain zeroes) in a
String, decrypt it as it's read from file. While adding zeroes to a
string is allowed (for a brief time it wasn't), doing so is bad form.
Changed paths:
engines/adl/adl.cpp
engines/adl/adl.h
engines/adl/adl_v4.cpp
diff --git a/engines/adl/adl.cpp b/engines/adl/adl.cpp
index e0c9b77c60a..43586489eeb 100644
--- a/engines/adl/adl.cpp
+++ b/engines/adl/adl.cpp
@@ -120,8 +120,9 @@ bool AdlEngine::pollEvent(Common::Event &event) const {
return false;
}
-Common::String AdlEngine::readString(Common::ReadStream &stream, byte until) const {
+Common::String AdlEngine::readString(Common::ReadStream &stream, byte until, const char *key) const {
Common::String str;
+ int keyLength = strlen(key);
while (1) {
byte b = stream.readByte();
@@ -132,8 +133,11 @@ Common::String AdlEngine::readString(Common::ReadStream &stream, byte until) con
if (b == until)
break;
+ if (keyLength)
+ b ^= key[str.size() % keyLength];
+
str += b;
- };
+ }
return str;
}
diff --git a/engines/adl/adl.h b/engines/adl/adl.h
index 4c0d54d99a4..7d53ecd9f78 100644
--- a/engines/adl/adl.h
+++ b/engines/adl/adl.h
@@ -274,7 +274,7 @@ protected:
virtual void gameLoop();
virtual void loadState(Common::ReadStream &stream);
virtual void saveState(Common::WriteStream &stream);
- Common::String readString(Common::ReadStream &stream, byte until = 0) const;
+ Common::String readString(Common::ReadStream &stream, byte until = 0, const char *key = "") const;
Common::String readStringAt(Common::SeekableReadStream &stream, uint offset, byte until = 0) const;
void extractExeStrings(Common::ReadStream &stream, uint16 printAddr, Common::StringArray &strings) const;
diff --git a/engines/adl/adl_v4.cpp b/engines/adl/adl_v4.cpp
index 89a2dc7db9f..7fdb1d4f6d1 100644
--- a/engines/adl/adl_v4.cpp
+++ b/engines/adl/adl_v4.cpp
@@ -175,14 +175,12 @@ void AdlEngine_v4::saveState(Common::WriteStream &stream) {
}
Common::String AdlEngine_v4::loadMessage(uint idx) const {
- Common::String str = AdlEngine_v3::loadMessage(idx);
-
- for (uint i = 0; i < str.size(); ++i) {
- const char *xorStr = "AVISDURGAN";
- str.setChar(str[i] ^ xorStr[i % strlen(xorStr)], i);
+ if (_messages[idx]) {
+ StreamPtr strStream(_messages[idx]->createReadStream());
+ return readString(*strStream, 0xff, "AVISDURGAN");
}
- return str;
+ return Common::String();
}
Common::String AdlEngine_v4::getItemDescription(const Item &item) const {
More information about the Scummvm-git-logs
mailing list