[Scummvm-git-logs] scummvm master -> 36940ed62eb470566be0652bc09381998c1a7b21

sev- sev at scummvm.org
Wed Jul 15 10:12:52 UTC 2020


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:
36940ed62e DIRECTOR: Fix script preprocessing


Commit: 36940ed62eb470566be0652bc09381998c1a7b21
    https://github.com/scummvm/scummvm/commit/36940ed62eb470566be0652bc09381998c1a7b21
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-15T12:10:09+02:00

Commit Message:
DIRECTOR: Fix script preprocessing

Changed paths:
    engines/director/cast.cpp
    engines/director/movie.cpp
    engines/director/movie.h


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 212a5cf209..fcf66f4e97 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -873,7 +873,7 @@ void Cast::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id,
 			}
 			// fallthrough
 		case 1:
-			ci->script = Common::String((const char *)castStrings[0].data, castStrings[0].len);
+			ci->script = castStrings[0].readString(false);
 			// fallthrough
 		case 0:
 			break;
@@ -1072,7 +1072,7 @@ void Cast::loadCastInfo(Common::SeekableSubReadStreamEndian &stream, uint16 id)
 	Common::Array<DataEntry> castStrings = Movie::loadDataEntries(stream);
 	CastMemberInfo *ci = new CastMemberInfo();
 
-	ci->script = Common::String((const char *)castStrings[0].data, castStrings[0].len);
+	ci->script = castStrings[0].readString(false);
 
 	if (!ci->script.empty() && ConfMan.getBool("dump_scripts"))
 		dumpScript(ci->script.c_str(), kCastScript, id);
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index 95b0317f9e..a3eca8842f 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -189,7 +189,7 @@ void Movie::loadFileInfo(Common::SeekableSubReadStreamEndian &stream) {
 	debugC(2, kDebugLoading, "****** Loading FileInfo VWFI");
 
 	Common::Array<DataEntry> fileInfoStrings = Movie::loadDataEntries(stream);
-	_script = Common::String((const char *)fileInfoStrings[0].data, fileInfoStrings[0].len);
+	_script = fileInfoStrings[0].readString(false);
 
 	if (!_script.empty() && ConfMan.getBool("dump_scripts"))
 		_cast->dumpScript(_script.c_str(), kMovieScript, _cast->_movieScriptCount);
diff --git a/engines/director/movie.h b/engines/director/movie.h
index 8335cc561e..f2312ac0d9 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -51,10 +51,15 @@ struct DataEntry {
 		free(data);
 	}
 
-	Common::String readString() {
+	Common::String readString(bool pascal = true) {
 		Common::String res;
 
-		for (uint i = 1; i < len; i++)
+		if (len == 0)
+			return res;
+
+		int start = pascal ? 1 : 0;
+
+		for (uint i = start; i < len; i++)
 			if (data[i] == '\r')
 				res += '\n';
 			else if (data[i] >= 0x20)




More information about the Scummvm-git-logs mailing list