[Scummvm-cvs-logs] SF.net SVN: scummvm:[36191] scummvm/trunk/engines/kyra/sound.cpp
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Sun Feb 1 22:11:04 CET 2009
Revision: 36191
http://scummvm.svn.sourceforge.net/scummvm/?rev=36191&view=rev
Author: lordhoto
Date: 2009-02-01 21:11:03 +0000 (Sun, 01 Feb 2009)
Log Message:
-----------
- Cleanup
- This time fixed the real cause of the mismatching malloc / delete[] call.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/sound.cpp
Modified: scummvm/trunk/engines/kyra/sound.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound.cpp 2009-02-01 21:09:29 UTC (rev 36190)
+++ scummvm/trunk/engines/kyra/sound.cpp 2009-02-01 21:11:03 UTC (rev 36191)
@@ -125,15 +125,28 @@
Audio::AppendableAudioStream *out = Audio::makeAppendableAudioStream(22050, Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_UNSIGNED);
for (Common::List<const char*>::iterator i = fileList.begin(); i != fileList.end(); i++) {
- uint32 fileSize = 0;
- uint8 *file = _vm->resource()->fileData(*i, &fileSize);
- Common::MemoryReadStream vocStream(file, fileSize, false);
+ Common::SeekableReadStream *file = _vm->resource()->createReadStream(*i);
+ // TODO: Maybe output an warning like "file not found"?
+ if (!file)
+ continue;
+
int size, rate;
- uint8 *data = Audio::loadVOCFromStream(vocStream, size, rate);
- out->queueBuffer(data, size);
- delete[] file;
+ uint8 *data = Audio::loadVOCFromStream(*file, size, rate);
+ delete file;
+
+ // FIXME/HACK: While loadVOCStream uses malloc / realloc,
+ // AppendableAudioStream uses delete[] to free the passed buffer.
+ // As a consequence we just 'move' the data to a buffer allocated
+ // via new[].
+ uint8 *vocBuffer = new uint8[size];
+ assert(vocBuffer);
+ memcpy(vocBuffer, data, size);
+ free(data);
+
+ out->queueBuffer(vocBuffer, size);
}
+
out->finish();
_soundChannels[h].file = *fileList.begin();
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