diff options
-rw-r--r-- | main/pbx.c | 2 | ||||
-rw-r--r-- | tests/test_substitution.c | 2 |
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 */ |