[Scummvm-cvs-logs] SF.net SVN: scummvm:[48881] scummvm/trunk/engines/sci/resource.cpp
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Sat May 1 16:51:58 CEST 2010
Revision: 48881
http://scummvm.svn.sourceforge.net/scummvm/?rev=48881&view=rev
Author: m_kiewitz
Date: 2010-05-01 14:51:57 +0000 (Sat, 01 May 2010)
Log Message:
-----------
SCI: fix sync resources not loading correctly when compressed (mp3/ogg/flac) audio resource file was used
Modified Paths:
--------------
scummvm/trunk/engines/sci/resource.cpp
Modified: scummvm/trunk/engines/sci/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource.cpp 2010-05-01 14:04:48 UTC (rev 48880)
+++ scummvm/trunk/engines/sci/resource.cpp 2010-05-01 14:51:57 UTC (rev 48881)
@@ -295,7 +295,7 @@
bool ResourceManager::loadPatch(Resource *res, Common::File &file) {
// We assume that the resource type matches res->type
- file.seek(res->_fileOffset + 2, SEEK_SET);
+ // We also assume that the current file position is right at the actual data (behind resourceid/headersize byte)
res->data = new byte[res->size];
@@ -329,7 +329,8 @@
res->unalloc();
return false;
}
-
+ // Skip resourceid and header size byte
+ file.seek(2, SEEK_SET);
return loadPatch(res, file);
}
@@ -375,6 +376,8 @@
// Load sample size
file.seek(7, SEEK_CUR);
res->size = file.readUint32LE();
+ // Adjust offset to point at the header data again
+ file.seek(-11, SEEK_CUR);
}
return loadPatch(res, file);
@@ -460,8 +463,15 @@
mappingTable++;
compressedOffset = *mappingTable;
// Go to next compressed offset and use that to calculate size of compressed sample
- mappingTable += 2;
- res->size = *mappingTable - compressedOffset;
+ switch (res->_id.type) {
+ case kResourceTypeSync:
+ case kResourceTypeSync36:
+ // we should already have a (valid) size
+ break;
+ default:
+ mappingTable += 2;
+ res->size = *mappingTable - compressedOffset;
+ }
break;
}
mappingTable += 2;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list