aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-07-11 22:53:58 +0200
committerFilippos Karapetis2019-09-01 22:47:55 +0300
commit8c44b032314475376e039853392292c578464091 (patch)
tree7141dc90ff5bb98c48f607880d733656c35bc9a9
parent39e74b027e372dcaed33ffa1b18f0de4abf82eb1 (diff)
downloadscummvm-rg350-8c44b032314475376e039853392292c578464091.tar.gz
scummvm-rg350-8c44b032314475376e039853392292c578464091.tar.bz2
scummvm-rg350-8c44b032314475376e039853392292c578464091.zip
TTS: Resolve segfault when exiting scummvm
-rw-r--r--backends/text-to-speech/linux/linux-text-to-speech.cpp2
-rw-r--r--common/text-to-speech.cpp3
-rw-r--r--common/text-to-speech.h1
3 files changed, 4 insertions, 2 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 bbe6705f58..5df8f80e32 100644
--- a/backends/text-to-speech/linux/linux-text-to-speech.cpp
+++ b/backends/text-to-speech/linux/linux-text-to-speech.cpp
@@ -87,7 +87,7 @@ LinuxTextToSpeechManager::LinuxTextToSpeechManager()
}
LinuxTextToSpeechManager::~LinuxTextToSpeechManager() {
- spd_close(_connection);
+ //spd_close(_connection);
}
void LinuxTextToSpeechManager::updateState(LinuxTextToSpeechManager::SpeechState state) {
diff --git a/common/text-to-speech.cpp b/common/text-to-speech.cpp
index d1b9539f93..1e2456d8a6 100644
--- a/common/text-to-speech.cpp
+++ b/common/text-to-speech.cpp
@@ -38,6 +38,9 @@ TextToSpeechManager::~TextToSpeechManager() {
TTSState *tmp = _ttsState;
while (tmp != nullptr) {
tmp = _ttsState->_next;
+ for (TTSVoice *i = _ttsState->_availaibleVoices.begin(); i < _ttsState->_availaibleVoices.end(); i++) {
+ free(i->_data);
+ }
delete _ttsState;
_ttsState = tmp;
}
diff --git a/common/text-to-speech.h b/common/text-to-speech.h
index 62cc5e878b..8d4b0a0f87 100644
--- a/common/text-to-speech.h
+++ b/common/text-to-speech.h
@@ -48,7 +48,6 @@ class TTSVoice {
TTSVoice(Gender gender, void *data)
: _gender(gender)
, _data(data) {}
- ~TTSVoice() { debug("%d", * (int *)_data); if (_data != nullptr) free(_data); }
Gender getGender() { return _gender; };
void setGender(Gender gender) { _gender = gender; };
void setData(void *data) { _data = data; };