From 9e621e99a5b908dbb0426cf57e35d7d89cef9dda Mon Sep 17 00:00:00 2001 From: Jason Parker Date: Sat, 6 Jan 2007 00:24:38 +0000 Subject: [PATCH] Save 1 whopping byte of allocated memory! This looks like it may have been a chicken/egg scenario.. You had to call a cleanup func, because everything was allocated. Then since you had to call a cleanup func, you were forced to allocate - ie; strdup(""). git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@49742 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/pbx.c | 12 ++++-------- pbx/pbx_config.c | 2 +- res/res_features.c | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/main/pbx.c b/main/pbx.c index d981a994c4..0c3c884728 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -4591,10 +4591,6 @@ static int ext_strncpy(char *dst, const char *src, int len) return count; } -static void null_datad(void *foo) -{ -} - /*! \brief add the extension in the priority chain. * returns 0 on success, -1 on failure */ @@ -4616,7 +4612,8 @@ static int add_pri(struct ast_context *con, struct ast_exten *tmp, replacement? If so, replace, otherwise, bonk. */ if (!replace) { ast_log(LOG_WARNING, "Unable to register extension '%s', priority %d in '%s', already in use\n", tmp->exten, tmp->priority, con->name); - tmp->datad(tmp->data); + if (tmp->datad) + tmp->datad(tmp->data); free(tmp); return -1; } @@ -4634,7 +4631,8 @@ static int add_pri(struct ast_context *con, struct ast_exten *tmp, if (tmp->priority == PRIORITY_HINT) ast_change_hint(e,tmp); /* Destroy the old one */ - e->datad(e->data); + if (e->datad) + e->datad(e->data); free(e); } else { /* Slip ourselves in just before e */ tmp->peer = e; @@ -4718,8 +4716,6 @@ int ast_add_extension2(struct ast_context *con, length ++; /* just the '\0' */ /* Be optimistic: Build the extension structure first */ - if (datad == NULL) - datad = null_datad; if (!(tmp = ast_calloc(1, length))) return -1; diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c index 6980ca197b..25fe7ddce5 100644 --- a/pbx/pbx_config.c +++ b/pbx/pbx_config.c @@ -2409,7 +2409,7 @@ static void pbx_load_users(void) } if (!ast_strlen_zero(iface)) { /* Add hint */ - ast_add_extension2(con, 0, cat, -1, NULL, NULL, iface, strdup(""), ast_free, registrar); + ast_add_extension2(con, 0, cat, -1, NULL, NULL, iface, NULL, NULL, registrar); /* If voicemail, use "stdexten" else use plain old dial */ if (hasvoicemail) { snprintf(tmp, sizeof(tmp), "stdexten|%s|${HINT}", cat); diff --git a/res/res_features.c b/res/res_features.c index 22c1d66ca6..1d8f2be65d 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -2277,7 +2277,7 @@ static int load_config(void) ast_log(LOG_ERROR, "Parking context '%s' does not exist and unable to create\n", parking_con); return -1; } - res = ast_add_extension2(con, 1, ast_parking_ext(), 1, NULL, NULL, parkcall, strdup(""), ast_free, registrar); + res = ast_add_extension2(con, 1, ast_parking_ext(), 1, NULL, NULL, parkcall, NULL, NULL, registrar); if (parkaddhints) park_add_hints(parking_con, parking_start, parking_stop); if (!res)