From aaf314cf46886e907c6b9607cc665312f95f77d0 Mon Sep 17 00:00:00 2001 From: Steve Murphy Date: Wed, 30 Jul 2008 22:02:07 +0000 Subject: [PATCH] (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: https://origsvn.digium.com/svn/asterisk/branches/1.4@134652 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- pbx/pbx_ael.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c index 6a6e05eef0..bd6775c08d 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);