diff options
Diffstat (limited to 'engines/bladerunner/music.cpp')
-rw-r--r-- | engines/bladerunner/music.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/bladerunner/music.cpp b/engines/bladerunner/music.cpp index 42c0b62759..a29b981f12 100644 --- a/engines/bladerunner/music.cpp +++ b/engines/bladerunner/music.cpp @@ -99,7 +99,7 @@ bool Music::play(const Common::String &trackName, int volume, int pan, int timeF if (_channel < 0) { delete _stream; _stream = nullptr; - delete _data; + delete[] _data; _data = nullptr; return false; @@ -248,7 +248,7 @@ void Music::ended() { _isPlaying = false; _channel = -1; - delete _data; + delete[] _data; _data = nullptr; _vm->getTimerManager()->installTimerProc(timerCallbackNext, 100 * 1000, this, "BladeRunnerMusicNextTimer"); @@ -293,12 +293,17 @@ void Music::timerCallbackNext(void *refCon) { byte *Music::getData(const Common::String &name) { // NOTE: This is not part original game, loading data is done in the mixer and its using buffering to limit memory usage Common::SeekableReadStream *stream = _vm->getResourceStream(name); + if (stream == nullptr) { return nullptr; } + uint32 size = stream->size(); - byte *data = (byte *)malloc(size); + byte *data = new byte[size]; stream->read(data, size); + + delete stream; + return data; } |