diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-07-30 22:02:07 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-07-30 22:02:07 +0000 |
commit | d5dc8e490c38cbad09e49fba3a26928542ae9525 (patch) | |
tree | 71464bb0d0881340b23edeaaf56e73175b679466 /pbx | |
parent | df16a6676b846428fb60a0552077de4f8f145388 (diff) |
(closes issue #13197)
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: http://svn.digium.com/svn/asterisk/branches/1.4@134652 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r-- | pbx/pbx_ael.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c index 6a6e05eef..bd6775c08 100644 --- a/pbx/pbx_ael.c +++ b/pbx/pbx_ael.c @@ -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); |