From 07e155a1507e9ab8a31ba923acbf5eb16e9ea9f4 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 11 Mar 2018 17:24:03 +0000 Subject: [PATCH] TranslateWord2: Don't process invalid phonemes. If ph_code is not located in the phoneme_tab, the resulting ph value will be NULL. This does not normally happen, but it can happen if word_phonemes contains garbage data, such as with the 1.49.2 multi-word logic when processing words like 'riposted'. --- src/libespeak-ng/translate.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libespeak-ng/translate.c b/src/libespeak-ng/translate.c index dc76d5f8..f426236a 100644 --- a/src/libespeak-ng/translate.c +++ b/src/libespeak-ng/translate.c @@ -1618,6 +1618,10 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa // Add the phonemes to the first stage phoneme list (ph_list2) ph = phoneme_tab[ph_code]; + if (ph == NULL) { + printf("Invalid phoneme code %d\n", ph_code); + continue; + } if (ph_code == phonSWITCH) { ph_list2[n_ph_list2].phcode = ph_code;