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: https://origsvn.digium.com/svn/asterisk/branches/1.2@41269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2
Russell Bryant 19 years ago
parent c6d94b0d89
commit 41fad4887e

@ -1045,46 +1045,42 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
} }
if (ast_get_extension_priority(p)!=PRIORITY_HINT) { if (ast_get_extension_priority(p)!=PRIORITY_HINT) {
char *tempdata = NULL, *startdata; char *tempdata, *startdata;
const char *el = ast_get_extension_label(p); const char *el = ast_get_extension_label(p);
char *label = calloc(1, 128); char label[128] = "";
tempdata = strdup((char *)ast_get_extension_app_data(p));
if (tempdata) { tempdata = ast_strdupa(ast_get_extension_app_data(p));
startdata = tempdata;
while (*tempdata) { startdata = tempdata;
if (*tempdata == '|') while (*tempdata) {
*tempdata = ','; if (*tempdata == '|')
tempdata++; *tempdata = ',';
} tempdata++;
tempdata = startdata;
} }
if (el) { tempdata = startdata;
if (snprintf(label, 127, "(%s)", el) != (strlen(el)+2)) {
incomplete = 1; // error encountered or label is > 125 chars if (el && (snprintf(label, sizeof(label), "(%s)", el) != (strlen(el) + 2)))
label = NULL; incomplete = 1; // error encountered or label is > 125 chars
};
}; if (ast_get_extension_matchcid(p)) {
if (ast_get_extension_matchcid(p))
fprintf(output, "exten => %s/%s,%d%s,%s(%s)\n", fprintf(output, "exten => %s/%s,%d%s,%s(%s)\n",
ast_get_extension_name(p), ast_get_extension_name(p),
ast_get_extension_cidmatch(p), ast_get_extension_cidmatch(p),
ast_get_extension_priority(p), (label)?label:"", ast_get_extension_priority(p), label,
ast_get_extension_app(p), ast_get_extension_app(p),
tempdata); tempdata);
else } else {
fprintf(output, "exten => %s,%d%s,%s(%s)\n", fprintf(output, "exten => %s,%d%s,%s(%s)\n",
ast_get_extension_name(p), ast_get_extension_name(p),
ast_get_extension_priority(p), (label)?label:"", ast_get_extension_priority(p), label,
ast_get_extension_app(p), ast_get_extension_app(p),
tempdata); tempdata);
if (tempdata) }
free(tempdata); } else {
if (label)
free(label);
} else
fprintf(output, "exten => %s,hint,%s\n", fprintf(output, "exten => %s,hint,%s\n",
ast_get_extension_name(p), ast_get_extension_name(p),
ast_get_extension_app(p)); ast_get_extension_app(p));
}
} }
p = ast_walk_extension_priorities(e, p); p = ast_walk_extension_priorities(e, p);

Loading…
Cancel
Save