say: Don't prepend ampersand erroneously.

Some logic in say.c for determining if we need
to also add an ampersand for file seperation was faulty,
as non-successful files would increment the count, causing
a leading ampersand to be added improperly.

This is fixed, and a unit test that captures this regression
is also added.

ASTERISK-30248 #close

Change-Id: I02c1d3a11d82fe4ea8b462070cbd1effb5834d2b
This commit is contained in:
Naveen Albert
2022-09-28 12:38:37 +00:00
committed by N A
parent d0bea5a725
commit 407216a0a5
2 changed files with 12 additions and 3 deletions

View File

@@ -160,7 +160,7 @@ struct ast_str* ast_get_character_str(const char *str, const char *lang, enum as
}
if ((fn && ast_fileexists(fn, NULL, lang) > 0) ||
(snprintf(asciibuf + 13, sizeof(asciibuf) - 13, "%d", str[num]) > 0 && ast_fileexists(asciibuf, NULL, lang) > 0 && (fn = asciibuf))) {
ast_str_append(&filenames, 0, (num == 0 ? "%s" : "&%s"), fn);
ast_str_append(&filenames, 0, "%s%s", ast_str_strlen(filenames) ? "&" : "", fn);
}
if (upper || lower) {
continue;
@@ -282,7 +282,7 @@ struct ast_str* ast_get_phonetic_str(const char *str, const char *lang)
fn = fnbuf;
}
if (fn && ast_fileexists(fn, NULL, lang) > 0) {
ast_str_append(&filenames, 0, (num == 0 ? "%s" : "&%s"), fn);
ast_str_append(&filenames, 0, "%s%s", ast_str_strlen(filenames) ? "&" : "", fn);
}
num++;
}
@@ -336,7 +336,7 @@ struct ast_str* ast_get_digit_str(const char *str, const char *lang)
break;
}
if (fn && ast_fileexists(fn, NULL, lang) > 0) {
ast_str_append(&filenames, 0, (num == 0 ? "%s" : "&%s"), fn);
ast_str_append(&filenames, 0, "%s%s", ast_str_strlen(filenames) ? "&" : "", fn);
}
num++;
}