[Scummvm-git-logs] scummvm master -> 2b8a41b980950df8ff9f481c61d964c93236c746

sev- sev at scummvm.org
Tue Nov 8 17:32:14 CET 2016


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
0dc532e878 DIRECTOR: Fix CASt resource parsing
2b8a41b980 DIRECTOR: Fix string lists loading


Commit: 0dc532e8781cb7009fdf13298425bf6538d55480
    https://github.com/scummvm/scummvm/commit/0dc532e8781cb7009fdf13298425bf6538d55480
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-11-08T17:20:06+01:00

Commit Message:
DIRECTOR: Fix CASt resource parsing

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 181ed9a..a6de557 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -462,6 +462,10 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 cas
 	//member.regX = 0 // FIXME: HACK
 	//member.regY = 0 // FIXME: HACK
 
+	byte *data = (byte *)malloc(size1);
+	stream.read(data, size1);
+	free(data);
+
 	if (size2) {
 		uint32 entryType = 0;
 		Common::Array<Common::String> castStrings = loadStrings(stream, entryType, false);


Commit: 2b8a41b980950df8ff9f481c61d964c93236c746
    https://github.com/scummvm/scummvm/commit/2b8a41b980950df8ff9f481c61d964c93236c746
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-11-08T17:20:19+01:00

Commit Message:
DIRECTOR: Fix string lists loading

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index a6de557..98d25cf 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -779,28 +779,28 @@ Common::Array<Common::String> Score::loadStrings(Common::SeekableSubReadStreamEn
 		stream.seek(offset);
 	}
 
-	uint16 count = stream.readUint16();
-	offset += (count + 1) * 4 + 2; // positions info + uint16 count
-	uint32 startPos = stream.readUint32() + offset;
+	uint16 count = stream.readUint16() + 1;
 
-	for (uint16 i = 0; i < count; i++) {
-		Common::String entryString;
-		uint32 nextPos = stream.readUint32() + offset;
-		uint32 streamPos = stream.pos();
+	uint32 *entries = (uint32 *)calloc(count, sizeof(uint32));
 
-		stream.seek(startPos);
+	for (uint i = 0; i < count; i++)
+		entries[i] = stream.readUint32();
 
-		while (startPos != nextPos) {
-			entryString += stream.readByte();
-			++startPos;
-		}
+	byte *data = (byte *)malloc(entries[count - 1]);
+	stream.read(data, entries[count - 1]);
 
-		strings.push_back(entryString);
+	for (uint i = 0; i < count - 1; i++) {
+		Common::String entryString;
 
-		stream.seek(streamPos);
-		startPos = nextPos;
+		for (uint j = entries[i]; j < entries[i + 1]; j++)
+			entryString += data[j];
+
+		strings.push_back(entryString);
 	}
 
+	free(data);
+	free(entries);
+
 	return strings;
 }
 





More information about the Scummvm-git-logs mailing list