The memory sanitizer would complain: ==4157154==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x7fc191d0a85b in TranslateWord3 /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/translate.c:1065:7 #1 0x7fc191d02916 in TranslateWord /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/translate.c:1100:14 #2 0x7fc191d1b324 in TranslateWord2 /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/translate.c:1448:15 #3 0x7fc191d14ebc in TranslateClause /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/translate.c:2623:17 #4 0x7fc191cfbc9b in SpeakNextClause /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/synthesize.c:1569:2 #5 0x7fc191cd52fc in Synthesize /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/speech.c:457:2 #6 0x7fc191cd6d7c in sync_espeak_Synth /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/speech.c:570:29 #7 0x7fc191cd6d7c in espeak_ng_Synthesize /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/speech.c:678:10 #8 0x7fc191ca0340 in espeak_Synth /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/espeak_api.c:90:32 #9 0x4a4381 in main /home/samy/brl/speech/espeak-ng-git/src/espeak-ng.c:691:3 #10 0x7fc19168b7fc in __libc_start_main csu/../csu/libc-start.c:332:16 #11 0x421449 in _start (/home/samy/ens/projet/1/speech/espeak-ng-git/src/.libs/espeak-ng+0x421449) Uninitialized value was created by a heap allocation #0 0x45000d in malloc (/home/samy/ens/projet/1/speech/espeak-ng-git/src/.libs/espeak-ng+0x45000d) #1 0x7fc191d1ca29 in NewTranslator /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/tr_languages.c:242:26 #2 0x7fc191d1ca29 in SelectTranslator /home/samy/brl/speech/espeak-ng-git/src/libespeak-ng/tr_languages.c:482:7 (and similar for expect_verb_sn expect_noun, expect_past, clause_upper_count, clause_lower_count) Indeed TranslateWord3 doesn't always initialize these fields. Better just initialize them directly from the Translator creation.master
tr->transpose_map = transpose_map_latin; | tr->transpose_map = transpose_map_latin; | ||||
tr->frequent_pairs = NULL; | tr->frequent_pairs = NULL; | ||||
tr->expect_verb = 0; | |||||
tr->expect_past = 0; | |||||
tr->expect_verb_s = 0; | |||||
tr->expect_noun = 0; | |||||
tr->clause_upper_count = 0; | |||||
tr->clause_lower_count = 0; | |||||
// only need lower case | // only need lower case | ||||
tr->letter_bits_offset = 0; | tr->letter_bits_offset = 0; | ||||
memset(tr->letter_bits, 0, sizeof(tr->letter_bits)); | memset(tr->letter_bits, 0, sizeof(tr->letter_bits)); |