[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