From: Matthew Nicholson Date: Mon, 11 Jul 2011 13:55:28 +0000 (+0000) Subject: Merged revisions 327512 via svnmerge from X-Git-Tag: 11.0.0-beta1~1373 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7eda60dca1ed0b108ecc212d830ac202de7c3058;p=thirdparty%2Fasterisk.git Merged revisions 327512 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r327512 | mnicholson | 2011-07-11 08:53:59 -0500 (Mon, 11 Jul 2011) | 2 lines reset our buffer each iteration when doing variable substitution ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@327513 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/pbx.c b/main/pbx.c index 3cb9affebd..e625a873aa 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -3732,6 +3732,9 @@ void ast_str_substitute_variables_full(struct ast_str **buf, ssize_t maxlen, str ast_str_reset(*buf); whereweare = tmp = templ; while (!ast_strlen_zero(whereweare)) { + /* reset our buffer */ + ast_str_reset(substr3); + /* Assume we're copying the whole remaining string */ pos = strlen(whereweare); nextvar = NULL; diff --git a/tests/test_substitution.c b/tests/test_substitution.c index 98e1ed1911..366b9371cc 100644 --- a/tests/test_substitution.c +++ b/tests/test_substitution.c @@ -263,6 +263,7 @@ AST_TEST_DEFINE(test_substitution) 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")); + TEST(test_expected_result(test, c, "${foo},${this_does_not_exist},${THIS_DOES_NOT_EXIST(either)}", "123,,")); #undef TEST /* For testing dialplan functions */