[Scummvm-cvs-logs] CVS: scummvm/scumm resource_v7he.cpp,1.50,1.51 sound.cpp,1.495,1.496
kirben
kirben at users.sourceforge.net
Thu Jan 5 21:41:01 CET 2006
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4823/scumm
Modified Files:
resource_v7he.cpp sound.cpp
Log Message:
Adjustments to createSound().
Index: resource_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v7he.cpp,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- resource_v7he.cpp 5 Jan 2006 11:42:33 -0000 1.50
+++ resource_v7he.cpp 6 Jan 2006 05:40:40 -0000 1.51
@@ -1817,7 +1817,9 @@
res.lock(rtSound, snd2id);
snd1Ptr = getResourceAddress(rtSound, snd1id);
+ assert(snd1Ptr);
snd2Ptr = getResourceAddress(rtSound, snd2id);
+ assert(snd2Ptr);
int i;
int chan = -1;
@@ -1837,8 +1839,11 @@
dst = sbng1Ptr + 8;
size = READ_BE_UINT32(sbng1Ptr + 4);
len = sbng1Ptr - snd1Ptr + size - curOffs;
- memcpy(dst, src, len);
+ byte *data = (byte *)malloc(len);
+ memcpy(data, src, len);
+ memcpy(dst, data, len);
+ free(data);
dst = sbng1Ptr + 8;
while ((offs = READ_LE_UINT16(dst)) != 0)
@@ -1878,6 +1883,8 @@
size1 = READ_BE_UINT32(sdat1Ptr + 4) - 8 - _sndOffs1;
size2 = READ_BE_UINT32(sdat2Ptr + 4) - 8;
+ debug(0, "SDAT size1 %d size2 %d", size1, size2);
+
if (size2 < size1) {
src = sdat2Ptr + 8;
dst = sdat1Ptr + 8 + _sndOffs1;
@@ -1894,17 +1901,17 @@
memcpy(dst, src, len);
- int tmp3 = size2 - size1;
- if (tmp3 != 0) {
- // TODO: Additional copy
+ if (size2 != size1) {
+ src = sdat2Ptr + 8 + size1;
+ dst = sdat1Ptr + 8;
+ len = size2 - size1;
+
+ memcpy(dst, src, len);
}
- _sndOffs1 += tmp3;
+ _sndOffs1 += size2 - size1;
_sndOffs2 += size2;
}
-
- res.unlock(rtSound, snd1id);
- res.unlock(rtSound, snd2id);
}
} // End of namespace Scumm
Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.495
retrieving revision 1.496
diff -u -d -r1.495 -r1.496
--- sound.cpp 5 Jan 2006 11:38:45 -0000 1.495
+++ sound.cpp 6 Jan 2006 05:40:40 -0000 1.496
@@ -1283,7 +1283,7 @@
_fileHandle->seek(-16, SEEK_CUR);
total_size = max_total_size + 8;
ptr = res.createResource(type, idx, total_size);
- _fileHandle->read(ptr, total_size - 8);
+ _fileHandle->read(ptr, total_size);
//dumpResource("sound-", idx, ptr);
return 1;
More information about the Scummvm-git-logs
mailing list