aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/sound/entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lastexpress/sound/entry.cpp')
-rw-r--r--engines/lastexpress/sound/entry.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/engines/lastexpress/sound/entry.cpp b/engines/lastexpress/sound/entry.cpp
index 44cc68a57b..f2a063e45f 100644
--- a/engines/lastexpress/sound/entry.cpp
+++ b/engines/lastexpress/sound/entry.cpp
@@ -30,11 +30,9 @@
#include "lastexpress/sound/sound.h"
#include "lastexpress/graphics.h"
-#include "lastexpress/helpers.h"
#include "lastexpress/lastexpress.h"
#include "lastexpress/resource.h"
-#include "common/stream.h"
namespace LastExpress {
@@ -47,6 +45,8 @@ namespace LastExpress {
SoundEntry::SoundEntry(LastExpressEngine *engine) : _engine(engine) {
_type = kSoundTypeNone;
+ _currentDataPtr = NULL;
+
_blockCount = 0;
_time = 0;
@@ -71,7 +71,13 @@ SoundEntry::~SoundEntry() {
// Entries that have been queued will have their streamed disposed automatically
if (!_soundStream)
SAFE_DELETE(_stream);
- delete _soundStream;
+
+ SAFE_DELETE(_soundStream);
+
+ free(_currentDataPtr);
+
+ _subtitle = NULL;
+ _stream = NULL;
// Zero passed pointers
_engine = NULL;
@@ -111,7 +117,7 @@ void SoundEntry::close() {
void SoundEntry::play() {
if (!_stream) {
- warning("[SoundEntry::play] stream has been disposed");
+ error("[SoundEntry::play] stream has been disposed");
return;
}
@@ -277,7 +283,7 @@ bool SoundEntry::updateSound() {
int l = strlen(sub) + 1;
if (l - 1 > 4)
- sub[l - 1 - 4] = 0;
+ sub[l - (1 + 4)] = 0;
showSubtitle(sub);
}
} else {
@@ -393,6 +399,10 @@ SubtitleEntry::SubtitleEntry(LastExpressEngine *engine) : _engine(engine) {
SubtitleEntry::~SubtitleEntry() {
SAFE_DELETE(_data);
+
+ // Zero-out passed pointers
+ _sound = NULL;
+ _engine = NULL;
}
void SubtitleEntry::load(Common::String filename, SoundEntry *soundEntry) {
@@ -423,6 +433,9 @@ void SubtitleEntry::loadData() {
}
void SubtitleEntry::setupAndDraw() {
+ if (!_sound)
+ error("[SubtitleEntry::setupAndDraw] Sound entry not initialized");
+
if (!_data) {
_data = new SubtitleManager(_engine->getFont());
_data->load(getArchive(_filename));