[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