diff --git a/funcs/func_sayfiles.c b/funcs/func_sayfiles.c index d3f3341a4d..7e0ece2c96 100644 --- a/funcs/func_sayfiles.c +++ b/funcs/func_sayfiles.c @@ -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) { diff --git a/main/say.c b/main/say.c index 28fe944b79..16e5c14208 100644 --- a/main/say.c +++ b/main/say.c @@ -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++; }