From: Anthony Minessale II Date: Thu, 1 Jul 2004 20:42:49 +0000 (+0000) Subject: bring justice to gotoif's always true bug X-Git-Tag: 1.0.0-rc1~88 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1d9a040d457e1e79347869900a8743a67bd5e2a;p=thirdparty%2Fasterisk.git bring justice to gotoif's always true bug git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3372 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/pbx.c b/pbx.c index f96e7de8c7..e7506b97b7 100755 --- a/pbx.c +++ b/pbx.c @@ -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); }