summaryrefslogtreecommitdiff
path: root/apps/app_macro.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2005-12-13 22:03:06 +0000
committerRussell Bryant <russell@russellbryant.com>2005-12-13 22:03:06 +0000
commit565dcc3482e850f24b0c1879fac33a2836b9e4d4 (patch)
tree170defa7697f2670486e3e19738ad7ea87739984 /apps/app_macro.c
parentbaecca23205444df5ddaf2f06a6d15f304edbeba (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.c21
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 */