aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/music.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/music.cpp')
-rw-r--r--engines/bladerunner/music.cpp11
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;
}