From c6fb12870be6994302da1c71891cedd70344a78d Mon Sep 17 00:00:00 2001 From: russell Date: Tue, 29 Aug 2006 13:33:34 +0000 Subject: 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 --- pbx/pbx_config.c | 48 ++++++++++++++++++++++-------------------------- 1 file 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); -- cgit v1.2.3