diff options
author | Bastien Bouclet | 2019-11-15 21:24:22 +0100 |
---|---|---|
committer | Bastien Bouclet | 2019-11-15 21:24:22 +0100 |
commit | 34bf3f2de0e2722f8a6e951e8fb5be069ba7299f (patch) | |
tree | 3d59490a3dcb2c2d467d0f7ccf24b25dee6503db /backends/text-to-speech | |
parent | c87ca97b2252999f3edb326cfd7a22fc639fbb64 (diff) | |
download | scummvm-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/text-to-speech')
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); |