aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorBastien Bouclet2019-11-15 21:24:22 +0100
committerBastien Bouclet2019-11-15 21:24:22 +0100
commit34bf3f2de0e2722f8a6e951e8fb5be069ba7299f (patch)
tree3d59490a3dcb2c2d467d0f7ccf24b25dee6503db /backends
parentc87ca97b2252999f3edb326cfd7a22fc639fbb64 (diff)
downloadscummvm-rg350-34bf3f2de0e2722f8a6e951e8fb5be069ba7299f.tar.gz
scummvm-rg350-34bf3f2de0e2722f8a6e951e8fb5be069ba7299f.tar.bz2
scummvm-rg350-34bf3f2de0e2722f8a6e951e8fb5be069ba7299f.zip
TTS: Fix use of virtual function in TTSMan destructor
TextToSpeechManager::freeVoiceData was called while the virtual function table pointer was already reset by the parent class destructor.
Diffstat (limited to 'backends')
-rw-r--r--backends/text-to-speech/linux/linux-text-to-speech.cpp3
-rw-r--r--backends/text-to-speech/macosx/macosx-text-to-speech.mm2
-rw-r--r--backends/text-to-speech/windows/windows-text-to-speech.cpp3
3 files changed, 8 insertions, 0 deletions
diff --git a/backends/text-to-speech/linux/linux-text-to-speech.cpp b/backends/text-to-speech/linux/linux-text-to-speech.cpp
index 5943b69f49..b4a0d8c393 100644
--- a/backends/text-to-speech/linux/linux-text-to-speech.cpp
+++ b/backends/text-to-speech/linux/linux-text-to-speech.cpp
@@ -127,6 +127,9 @@ void SpeechDispatcherManager::init() {
SpeechDispatcherManager::~SpeechDispatcherManager() {
stop();
+
+ clearState();
+
if (_connection != 0)
spd_close(_connection);
if (_threadCreated)
diff --git a/backends/text-to-speech/macosx/macosx-text-to-speech.mm b/backends/text-to-speech/macosx/macosx-text-to-speech.mm
index 72f56f91be..4d232f3b95 100644
--- a/backends/text-to-speech/macosx/macosx-text-to-speech.mm
+++ b/backends/text-to-speech/macosx/macosx-text-to-speech.mm
@@ -66,6 +66,8 @@ MacOSXTextToSpeechManager::MacOSXTextToSpeechManager() : Common::TextToSpeechMan
}
MacOSXTextToSpeechManager::~MacOSXTextToSpeechManager() {
+ clearState();
+
[synthesizer release];
[synthesizerDelegate release];
}
diff --git a/backends/text-to-speech/windows/windows-text-to-speech.cpp b/backends/text-to-speech/windows/windows-text-to-speech.cpp
index 9f4ecf742a..a398200bad 100644
--- a/backends/text-to-speech/windows/windows-text-to-speech.cpp
+++ b/backends/text-to-speech/windows/windows-text-to-speech.cpp
@@ -120,6 +120,9 @@ void WindowsTextToSpeechManager::init() {
WindowsTextToSpeechManager::~WindowsTextToSpeechManager() {
stop();
+
+ clearState();
+
if (_thread != NULL) {
WaitForSingleObject(_thread, INFINITE);
CloseHandle(_thread);