Skip to content

Commit

Permalink
say: Don't prepend ampersand erroneously.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
InterLinked1 authored and Friendly Automation committed Oct 26, 2022
1 parent b283c8c commit 0825d26
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
9 changes: 9 additions & 0 deletions funcs/func_sayfiles.c
Expand Up @@ -211,6 +211,15 @@ AST_TEST_DEFINE(test_SAYFILES_function)
res = AST_TEST_FAIL;
}

/* + should be ignored and there should not be a leading & */
ast_str_set(&expr, 0, "${SAYFILES(+18005551212,digits)}");
ast_str_substitute_variables(&result, 0, NULL, ast_str_buffer(expr));
if (strcmp(ast_str_buffer(result), "digits/1&digits/8&digits/0&digits/0&digits/5&digits/5&digits/5&digits/1&digits/2&digits/1&digits/2") != 0) {
ast_test_status_update(test, "SAYFILES(+18005551212,digits) test failed ('%s')\n",
ast_str_buffer(result));
res = AST_TEST_FAIL;
}

ast_str_set(&expr, 0, "${SAYFILES(35,number)}");
ast_str_substitute_variables(&result, 0, NULL, ast_str_buffer(expr));
if (strcmp(ast_str_buffer(result), "digits/30&digits/5") != 0) {
Expand Down
6 changes: 3 additions & 3 deletions main/say.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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++;
}
Expand Down Expand Up @@ -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++;
}
Expand Down

0 comments on commit 0825d26

Please sign in to comment.