summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/pbx.c2
-rw-r--r--tests/test_substitution.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/main/pbx.c b/main/pbx.c
index 0059cbd0b..3cb9affeb 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -3663,9 +3663,9 @@ int ast_func_read2(struct ast_channel *chan, const char *function, struct ast_st
if (acfptr->mod) {
u = __ast_module_user_add(acfptr->mod, chan);
}
+ ast_str_reset(*str);
if (acfptr->read2) {
/* ast_str enabled */
- ast_str_reset(*str);
res = acfptr->read2(chan, copy, args, str, maxlen);
} else {
/* Legacy function pointer, allocate buffer for result */
diff --git a/tests/test_substitution.c b/tests/test_substitution.c
index aa7d14f91..98e1ed191 100644
--- a/tests/test_substitution.c
+++ b/tests/test_substitution.c
@@ -261,6 +261,8 @@ AST_TEST_DEFINE(test_substitution)
TEST(test_expected_result(test, c, "A${${baz}o:-2:-1}A", "A2A"));
pbx_builtin_setvar_helper(c, "list1", "ab&cd&ef");
TEST(test_expected_result(test, c, "${LISTFILTER(list1,&,cd)}", "ab&ef"));
+ TEST(test_expected_result(test, c, "${SHELL(echo -n 123)},${SHELL(echo -n 456)}", "123,456"));
+ TEST(test_expected_result(test, c, "${foo},${CDR(answer)},${SHELL(echo -n 456)}", "123,,456"));
#undef TEST
/* For testing dialplan functions */