aboutsummaryrefslogtreecommitdiffstats
path: root/pbx
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-29 13:33:34 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-29 13:33:34 +0000
commitc6fb12870be6994302da1c71891cedd70344a78d (patch)
tree45195bf8fa2f653cd01f4fa51df0dff5a79e5e8e /pbx
parenta721d9f9303ead3683e4a0cc1b761a00f44c4528 (diff)
clean up last commit ... most notably, there is no reason to do heap
allocations here, and it also included a potential memory leak git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@41269 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r--pbx/pbx_config.c48
1 files changed, 22 insertions, 26 deletions
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index fcc80cb91..2a060e1ad 100644
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -1045,46 +1045,42 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
}
if (ast_get_extension_priority(p)!=PRIORITY_HINT) {
- char *tempdata = NULL, *startdata;
+ char *tempdata, *startdata;
const char *el = ast_get_extension_label(p);
- char *label = calloc(1, 128);
- tempdata = strdup((char *)ast_get_extension_app_data(p));
- if (tempdata) {
- startdata = tempdata;
- while (*tempdata) {
- if (*tempdata == '|')
- *tempdata = ',';
- tempdata++;
- }
- tempdata = startdata;
+ char label[128] = "";
+
+ tempdata = ast_strdupa(ast_get_extension_app_data(p));
+
+ startdata = tempdata;
+ while (*tempdata) {
+ if (*tempdata == '|')
+ *tempdata = ',';
+ tempdata++;
}
- if (el) {
- if (snprintf(label, 127, "(%s)", el) != (strlen(el)+2)) {
- incomplete = 1; // error encountered or label is > 125 chars
- label = NULL;
- };
- };
- if (ast_get_extension_matchcid(p))
+ tempdata = startdata;
+
+ if (el && (snprintf(label, sizeof(label), "(%s)", el) != (strlen(el) + 2)))
+ incomplete = 1; // error encountered or label is > 125 chars
+
+ if (ast_get_extension_matchcid(p)) {
fprintf(output, "exten => %s/%s,%d%s,%s(%s)\n",
ast_get_extension_name(p),
ast_get_extension_cidmatch(p),
- ast_get_extension_priority(p), (label)?label:"",
+ ast_get_extension_priority(p), label,
ast_get_extension_app(p),
tempdata);
- else
+ } else {
fprintf(output, "exten => %s,%d%s,%s(%s)\n",
ast_get_extension_name(p),
- ast_get_extension_priority(p), (label)?label:"",
+ ast_get_extension_priority(p), label,
ast_get_extension_app(p),
tempdata);
- if (tempdata)
- free(tempdata);
- if (label)
- free(label);
- } else
+ }
+ } else {
fprintf(output, "exten => %s,hint,%s\n",
ast_get_extension_name(p),
ast_get_extension_app(p));
+ }
}
p = ast_walk_extension_priorities(e, p);