Merged revisions 49742 via svnmerge from
authorJason Parker <jparker@digium.com>
Sat, 6 Jan 2007 00:28:16 +0000 (00:28 +0000)
committerJason Parker <jparker@digium.com>
Sat, 6 Jan 2007 00:28:16 +0000 (00:28 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r49742 | qwell | 2007-01-05 18:24:38 -0600 (Fri, 05 Jan 2007) | 7 lines

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/trunk@49743 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/pbx.c
pbx/pbx_config.c
res/res_features.c

index e45495e..151a791 100644 (file)
@@ -4556,10 +4556,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
  */
@@ -4581,7 +4577,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;
                }
@@ -4599,7 +4596,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;
@@ -4683,8 +4681,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;
 
index d999f3c..7cd0fd5 100644 (file)
@@ -1576,7 +1576,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);
index 20ea18d..1aba2c1 100644 (file)
@@ -2285,7 +2285,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)