diff options
author | Anthony Minessale II <anthmct@yahoo.com> | 2004-07-01 20:42:49 +0000 |
---|---|---|
committer | Anthony Minessale II <anthmct@yahoo.com> | 2004-07-01 20:42:49 +0000 |
commit | b1d9a040d457e1e79347869900a8743a67bd5e2a (patch) | |
tree | 4a501af4af1ee21598d87c9b1b1d360fc71a65eb /pbx.c | |
parent | fb8ebe63659a1db70159aec65c3820c2f243c103 (diff) |
bring justice to gotoif's always true bug
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3372 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'pbx.c')
-rwxr-xr-x | pbx.c | 25 |
1 files changed, 4 insertions, 21 deletions
@@ -4588,19 +4588,7 @@ void pbx_builtin_clear_globals(void) static int pbx_checkcondition(char *condition) { - char *s; - int ret; - - s=strdup(condition); - - ret=1; - - if ((strcasecmp(s,"0")) || ast_strlen_zero(s)) { - ret=0; - } - - free(s); - return(ret); + return condition ? atoi(condition) : 0; } static int pbx_builtin_gotoif(struct ast_channel *chan, void *data) @@ -4615,17 +4603,12 @@ static int pbx_builtin_gotoif(struct ast_channel *chan, void *data) return 0; } - s=strdup(data); + s=ast_strdupa(data); stringp=s; condition=strsep(&stringp,"?"); branch1=strsep(&stringp,":"); branch2=strsep(&stringp,""); - - if (pbx_checkcondition(condition)) { - branch=branch2; - } else { - branch=branch1; - } + branch = pbx_checkcondition(condition) ? branch1 : branch2; if ((branch==NULL) || ast_strlen_zero(branch)) { ast_log(LOG_NOTICE, "Not taking any branch\n"); @@ -4633,7 +4616,7 @@ static int pbx_builtin_gotoif(struct ast_channel *chan, void *data) } rc=pbx_builtin_goto(chan,branch); - free(s); + return(rc); } |