|
|
@@ -372,7 +372,7 @@ typedef enum |
|
|
|
LINE_PARSER_END_OF_PRONUNCIATION = 5, |
|
|
|
} LINE_PARSER_STATES; |
|
|
|
|
|
|
|
static int compile_line(char *linebuf, char *dict_line, int *hash) |
|
|
|
static int compile_line(char *linebuf, char *dict_line, int n_dict_line, int *hash) |
|
|
|
{ |
|
|
|
// Compile a line in the language_list file |
|
|
|
unsigned char c; |
|
|
@@ -621,7 +621,15 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) |
|
|
|
length = len_word + 2; |
|
|
|
} else { |
|
|
|
length = len_word + len_phonetic + 3; |
|
|
|
strcpy(&dict_line[(len_word)+2], encoded_ph); |
|
|
|
if (length < n_dict_line) { |
|
|
|
strcpy(&dict_line[(len_word)+2], encoded_ph); |
|
|
|
} else { |
|
|
|
fprintf(f_log, "%5d: Dictionary line length would overflow the data buffer: %d\n", linenum, length); |
|
|
|
error_count++; |
|
|
|
// no phonemes specified. set bit 7 |
|
|
|
dict_line[1] |= 0x80; |
|
|
|
length = len_word + 2; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (ix = 0; ix < n_flag_codes; ix++) |
|
|
@@ -714,7 +722,7 @@ static int compile_dictlist_file(const char *path, const char *filename) |
|
|
|
while (fgets(buf, sizeof(buf), f_in) != NULL) { |
|
|
|
linenum++; |
|
|
|
|
|
|
|
length = compile_line(buf, dict_line, &hash); |
|
|
|
length = compile_line(buf, dict_line, sizeof(dict_line), &hash); |
|
|
|
if (length == 0) continue; // blank line |
|
|
|
|
|
|
|
hash_counts[hash]++; |