[asterisk-commits] mnicholson: trunk r327107 - in /trunk: ./ main/pbx.c tests/test_substitution.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jul 8 14:54:26 CDT 2011


Author: mnicholson
Date: Fri Jul  8 14:54:23 2011
New Revision: 327107

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=327107
Log:
Merged revisions 327106 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r327106 | mnicholson | 2011-07-08 14:52:51 -0500 (Fri, 08 Jul 2011) | 11 lines
  
  Reset our ast_str before passing it on to dialplan function backends.
  
  It is possible for a dialplan backend to not modify the given buffer or ast_str
  and still return success. This causes any previous value stored in the buffer
  to be used as if the new function call provided it. Some functions also append
  to the given buffer assuming it is empty.
  
  The test_substitution unit test has also been modified to detect this problem.
  
  (closes issue ASTERISK-17878)
........

Modified:
    trunk/   (props changed)
    trunk/main/pbx.c
    trunk/tests/test_substitution.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Modified: trunk/main/pbx.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/pbx.c?view=diff&rev=327107&r1=327106&r2=327107
==============================================================================
--- trunk/main/pbx.c (original)
+++ trunk/main/pbx.c Fri Jul  8 14:54:23 2011
@@ -3663,9 +3663,9 @@
 		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 */

Modified: trunk/tests/test_substitution.c
URL: http://svnview.digium.com/svn/asterisk/trunk/tests/test_substitution.c?view=diff&rev=327107&r1=327106&r2=327107
==============================================================================
--- trunk/tests/test_substitution.c (original)
+++ trunk/tests/test_substitution.c Fri Jul  8 14:54:23 2011
@@ -261,6 +261,8 @@
 	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 */




More information about the asterisk-commits mailing list