| @@ -1497,7 +1497,7 @@ void TranslateClauseWithTerminator(Translator *tr, int *tone_out, char **voice_c | |||
| char *pn; | |||
| char *pw; | |||
| char number_buf[150]; | |||
| WORD_TAB num_wtab[50]; // copy of 'words', when splitting numbers into parts | |||
| WORD_TAB num_wtab[N_CLAUSE_WORDS]; // copy of 'words', when splitting numbers into parts | |||
| // start speaking at a specified word position in the text? | |||
| count_words++; | |||
| @@ -1551,7 +1551,7 @@ void TranslateClauseWithTerminator(Translator *tr, int *tone_out, char **voice_c | |||
| if ((n_digits > tr->langopts.max_digits) || (word[0] == '0')) | |||
| words[ix].flags |= FLAG_INDIVIDUAL_DIGITS; | |||
| while (pn < &number_buf[sizeof(number_buf)-20]) { | |||
| while (pn < &number_buf[sizeof(number_buf)-20] && nw < N_CLAUSE_WORDS-1) { | |||
| if (!IsDigit09(c = *pw++) && (c != tr->langopts.decimal_sep)) | |||
| break; | |||
| @@ -1588,7 +1588,7 @@ void TranslateClauseWithTerminator(Translator *tr, int *tone_out, char **voice_c | |||
| pn[16] = 0; | |||
| nw = 0; | |||
| for (pw = &number_buf[3]; pw < pn;) { | |||
| for (pw = &number_buf[3]; pw < pn && nw < N_CLAUSE_WORDS;) { | |||
| // keep wflags for each part, for FLAG_HYPHEN_AFTER | |||
| dict_flags = TranslateWord2(tr, pw, &num_wtab[nw++], words[ix].pre_pause); | |||
| while (*pw && *pw++ != ' ') | |||