summaryrefslogtreecommitdiff
path: root/main/ast_expr2f.c
diff options
context:
space:
mode:
authorSteve Murphy <murf@digium.com>2007-11-06 19:40:33 +0000
committerSteve Murphy <murf@digium.com>2007-11-06 19:40:33 +0000
commit117d3d834eb0d3a56badf44c8ab880387f06f96c (patch)
tree7dfe89698a487ace5e46301c3fa2936e158909fc /main/ast_expr2f.c
parent402cfcfbbc6060c34a3f9a96147081ea17f75a0c (diff)
Hoping to avoid a crash in OSX for a problem blitzrage found
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89051 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/ast_expr2f.c')
-rw-r--r--main/ast_expr2f.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/main/ast_expr2f.c b/main/ast_expr2f.c
index 243046558..c9ae8defd 100644
--- a/main/ast_expr2f.c
+++ b/main/ast_expr2f.c
@@ -3207,13 +3207,17 @@ int ast_expr(char *expr, char *buf, int length, struct ast_channel *chan)
res_length = snprintf(buf, length, FP___PRINTF, io.val->u.i);
return_value = (res_length <= length) ? res_length : length;
} else {
+ if (io.val->u.s)
#if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
- strncpy(buf, io.val->u.s, length - 1);
+ strncpy(buf, io.val->u.s, length - 1);
#else /* !STANDALONE && !LOW_MEMORY */
- ast_copy_string(buf, io.val->u.s, length);
+ ast_copy_string(buf, io.val->u.s, length);
#endif /* STANDALONE || LOW_MEMORY */
+ else
+ buf[0] = 0;
return_value = strlen(buf);
- free(io.val->u.s);
+ if (io.val->u.s)
+ free(io.val->u.s);
}
free(io.val);
}