summaryrefslogtreecommitdiff
path: root/pbx.c
diff options
context:
space:
mode:
authorAnthony Minessale II <anthmct@yahoo.com>2004-07-01 20:42:49 +0000
committerAnthony Minessale II <anthmct@yahoo.com>2004-07-01 20:42:49 +0000
commitb1d9a040d457e1e79347869900a8743a67bd5e2a (patch)
tree4a501af4af1ee21598d87c9b1b1d360fc71a65eb /pbx.c
parentfb8ebe63659a1db70159aec65c3820c2f243c103 (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-xpbx.c25
1 files changed, 4 insertions, 21 deletions
diff --git a/pbx.c b/pbx.c
index f96e7de8c..e7506b97b 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);
}