]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
(closes issue #13197)
authorSteve Murphy <murf@digium.com>
Wed, 30 Jul 2008 22:02:07 +0000 (22:02 +0000)
committerSteve Murphy <murf@digium.com>
Wed, 30 Jul 2008 22:02:07 +0000 (22:02 +0000)
Reported by: pj

(closes issue #13051)
Reported by: pj

This patch substitutes commas in the expr
supplied to the if () statement, as in
if ( expr ) ...

This solves both the bugs above, and makes
the source symmetric with switch statements,
which were earlier reported to need this sort
of treatment.

I tested this using the examples, both for
the compiler and at run time. Looks good.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@134652 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx/pbx_ael.c

index 6a6e05eef0e520c02526ebb1b35acbbe7f367b74..bd6775c08d945b4feac8fe75a5a7756567aff650 100644 (file)
@@ -3641,8 +3641,13 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
                        if_end->type = AEL_APPCALL;
                        if ( p->type == PV_RANDOM )
                                snprintf(buf1,sizeof(buf1),"$[${RAND(0|99)} < (%s)]",p->u1.str);
-                       else
-                               snprintf(buf1,sizeof(buf1),"$[%s]",p->u1.str);
+                       else {
+                               char buf[8000];
+                               strcpy(buf,p->u1.str);
+                               substitute_commas(buf);
+                               snprintf(buf1,sizeof(buf1),"$[%s]",buf);
+                       }
+                       
                        if_test->app = 0;
                        if_test->appargs = strdup(buf1);
                        snprintf(buf1,sizeof(buf1),"Finish if-%s-%d", label, control_statement_count);