diff options
author | Russell Bryant <russell@russellbryant.com> | 2005-12-13 22:03:06 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2005-12-13 22:03:06 +0000 |
commit | 565dcc3482e850f24b0c1879fac33a2836b9e4d4 (patch) | |
tree | 170defa7697f2670486e3e19738ad7ea87739984 /apps/app_macro.c | |
parent | baecca23205444df5ddaf2f06a6d15f304edbeba (diff) |
reduce some duplicated code when doing a strdup (issue #5986)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7472 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_macro.c')
-rw-r--r-- | apps/app_macro.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/apps/app_macro.c b/apps/app_macro.c index f36e979c5..d77642ff8 100644 --- a/apps/app_macro.c +++ b/apps/app_macro.c @@ -87,6 +87,11 @@ STANDARD_LOCAL_USER; LOCAL_USER_DECL; +static char *safe_strdup(const char *s) +{ + return s ? strdup(s) : NULL; +} + static int macro_exec(struct ast_channel *chan, void *data) { const char *s; @@ -162,25 +167,17 @@ static int macro_exec(struct ast_channel *chan, void *data) } argc = 1; /* Save old macro variables */ - save_macro_exten = pbx_builtin_getvar_helper(chan, "MACRO_EXTEN"); - if (save_macro_exten) - save_macro_exten = strdup(save_macro_exten); + save_macro_exten = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_EXTEN")); pbx_builtin_setvar_helper(chan, "MACRO_EXTEN", oldexten); - save_macro_context = pbx_builtin_getvar_helper(chan, "MACRO_CONTEXT"); - if (save_macro_context) - save_macro_context = strdup(save_macro_context); + save_macro_context = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_CONTEXT")); pbx_builtin_setvar_helper(chan, "MACRO_CONTEXT", oldcontext); - save_macro_priority = pbx_builtin_getvar_helper(chan, "MACRO_PRIORITY"); - if (save_macro_priority) - save_macro_priority = strdup(save_macro_priority); + save_macro_priority = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_PRIORITY")); snprintf(pc, sizeof(pc), "%d", oldpriority); pbx_builtin_setvar_helper(chan, "MACRO_PRIORITY", pc); - save_macro_offset = pbx_builtin_getvar_helper(chan, "MACRO_OFFSET"); - if (save_macro_offset) - save_macro_offset = strdup(save_macro_offset); + save_macro_offset = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_OFFSET")); pbx_builtin_setvar_helper(chan, "MACRO_OFFSET", NULL); /* Setup environment for new run */ |