aboutsummaryrefslogtreecommitdiffstats
path: root/main/ast_expr2.y
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2009-01-15 20:54:59 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2009-01-15 20:54:59 +0000
commit40e2c0e15ac823b7673596e94dc627b9d069a47d (patch)
treed2b4dff132bd165c4f9a169faecdb0ad75d9ce42 /main/ast_expr2.y
parentfe480759d927d3b4576af945a36d6afc5113884e (diff)
This patch allows null args in ast_expr2 func calls, and fixes commas being converted to pipes, which was 1.4 type stuff.
If the user says count=ENUMLOOKUP(${EXTEN},ALL,c,,enum.mydomain.tld); then it won't complain about the empty arg (c,,...) and fabled's patch won't let it swap the commas for pipes. Ran it thru my dialplan and no complaints. (closes issue #14169) Reported by: fabled Patches: function-argument-separator-fix.diff uploaded by fabled (license 448) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@168737 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/ast_expr2.y')
-rw-r--r--main/ast_expr2.y10
1 files changed, 8 insertions, 2 deletions
diff --git a/main/ast_expr2.y b/main/ast_expr2.y
index a179feaeb..cb8f9f6b0 100644
--- a/main/ast_expr2.y
+++ b/main/ast_expr2.y
@@ -386,12 +386,18 @@ start: expr { ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(st
;
arglist: expr { $$ = alloc_expr_node(AST_EXPR_NODE_VAL); $$->val = $1;}
- | arglist TOK_COMMA expr %prec TOK_RP{struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
+ | arglist TOK_COMMA expr %prec TOK_RP {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
struct expr_node *t;
DESTROY($2);
for (t=$1;t->right;t=t->right)
;
$$ = $1; t->right = x; x->val = $3;}
+ | arglist TOK_COMMA %prec TOK_RP {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
+ struct expr_node *t; /* NULL args should OK */
+ DESTROY($2);
+ for (t=$1;t->right;t=t->right)
+ ;
+ $$ = $1; t->right = x; x->val = make_str("");}
;
expr:
@@ -702,7 +708,7 @@ static char *compose_func_args(struct expr_node *arglist)
char numbuf[30];
if (t != arglist)
- strcat(argbuf,"|");
+ strcat(argbuf,",");
if (t->val) {
if (t->val->type == AST_EXPR_number) {