]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 181135 via svnmerge from
authorJeff Peeler <jpeeler@digium.com>
Wed, 11 Mar 2009 04:33:29 +0000 (04:33 +0000)
committerJeff Peeler <jpeeler@digium.com>
Wed, 11 Mar 2009 04:33:29 +0000 (04:33 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

........
  r181135 | jpeeler | 2009-03-10 23:06:44 -0500 (Tue, 10 Mar 2009) | 20 lines

  Fix malloc debug macros to work properly with h323.

  The main problem here was that cstdlib was undefining free thereby causing the
  proper debug macros to not be used. ast_h323.cxx has been changed to call
  ast_free instead to avoid the issue.

  A few other issues were addressed:
  - There were a few instances of functions improperly passing ast_free instead
  of ast_free_ptr.
  - Some clean up was done to avoid the debug macros intentionally being redefined.
  (copied below from Kevin's commit, appreciate the help)
  - disable astmm.h from doing anything when STANDALONE is defined, which is used
  by the tools in the utils/ directory that use parts of Asterisk header files in
  hackish ways; also ensure that utils/extconf.c and utils/conf2ael.c are
  compiled with STANDALONE defined.

  (closes issue #13593)
  Reported by: pj
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@181199 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c
channels/h323/ast_h323.cxx
include/asterisk/astmm.h
include/asterisk/utils.h
main/features.c
pbx/pbx_config.c
utils/Makefile
utils/extconf.c

index b8188692b5a4b926ea490a5cd985f2ef4337cd9b..da4b3d6b33d9fe7a322f647a95920942296c8e03 100644 (file)
@@ -3811,7 +3811,7 @@ static void register_peer_exten(struct sip_peer *peer, int onoff)
                if (onoff) {
                        if (!ast_exists_extension(NULL, context, ext, 1, NULL)) {
                                ast_add_extension(context, 1, ext, 1, NULL, NULL, "Noop",
-                                        ast_strdup(peer->name), ast_free, "SIP");
+                                        ast_strdup(peer->name), ast_free_ptr, "SIP");
                        }
                } else if (pbx_find_extension(NULL, NULL, &q, context, ext, 1, NULL, "", E_MATCH)) {
                        ast_context_remove_extension(context, ext, 1, NULL);
index 5f7ea659768b8dfad7face01d8f727fc9cea4c54..31fc519fa72d860b721bdc5948d9d313fa7bcb88 100644 (file)
@@ -137,7 +137,7 @@ int PAsteriskLog::Buffer::underflow()
 
 int PAsteriskLog::Buffer::sync()
 {
-       char *str = strdup(string);
+       char *str = ast_strdup(string);
        char *s, *s1;
        char c;
 
@@ -153,7 +153,7 @@ int PAsteriskLog::Buffer::sync()
                ast_verbose("%s", s);
                *s1 = c;
        }
-       free(str);
+       ast_free(str);
 
        string = PString();
        char *base = string.GetPointer(2000);
@@ -2138,7 +2138,7 @@ MyH323_ExternalRTPChannel::MyH323_ExternalRTPChannel(MyH323Connection & connecti
                /* tell the H.323 stack */
                SetExternalAddress(H323TransportAddress(localIpAddr, localPort), H323TransportAddress(localIpAddr, localPort + 1));
                /* clean up allocated memory */
-               free(info);
+               ast_free(info);
        }
 
        /* Get the payload code */
@@ -2385,7 +2385,7 @@ int h323_set_alias(struct oh323_alias *alias)
                        endPoint->SetGateway();
                }
                if (prefix)
-                       free(prefix);
+                       ast_free(prefix);
        }
        return 0;
 }
index 553587942698cced6f3921a18772cba77ad119bc..26273c938908b18c0f97b35ebfa6c1204b7865df 100644 (file)
  * \brief Asterisk memory usage debugging
  */
 
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef _ASTERISK_ASTMM_H
 #define _ASTERISK_ASTMM_H
 
+#ifndef STANDALONE
+
 #define __AST_DEBUG_MALLOC
 
 #include "asterisk.h"
@@ -42,6 +49,7 @@
 #undef strndup
 #undef asprintf
 #undef vasprintf
+#undef free
 
 void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
 void *__ast_calloc_cache(size_t nmemb, size_t size, const char *file, int lineno, const char *func);
@@ -61,30 +69,60 @@ void __ast_mm_init(void);
 #define calloc(a,b) \
        __ast_calloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_calloc(a,b) \
+       __ast_calloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #define ast_calloc_cache(a,b) \
        __ast_calloc_cache(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 #define malloc(a) \
        __ast_malloc(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_malloc(a) \
+       __ast_malloc(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #define free(a) \
        __ast_free(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_free(a) \
+       __ast_free(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #define realloc(a,b) \
        __ast_realloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_realloc(a,b) \
+       __ast_realloc(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #define strdup(a) \
        __ast_strdup(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_strdup(a) \
+       __ast_strdup(a,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #define strndup(a,b) \
        __ast_strndup(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_strndup(a,b) \
+       __ast_strndup(a,b,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #define asprintf(a, b, c...) \
        __ast_asprintf(__FILE__, __LINE__, __PRETTY_FUNCTION__, a, b, c)
 
+#define ast_asprintf(a, b, c...) \
+       __ast_asprintf(__FILE__, __LINE__, __PRETTY_FUNCTION__, a, b, c)
+
 #define vasprintf(a,b,c) \
        __ast_vasprintf(a,b,c,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
+#define ast_vasprintf(a,b,c) \
+       __ast_vasprintf(a,b,c,__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
+#endif /* !STANDALONE */
+
 #else
 #error "NEVER INCLUDE astmm.h DIRECTLY!!"
 #endif /* _ASTERISK_ASTMM_H */
+
+#ifdef __cplusplus
+}
+#endif
index c2c88cca26910c514c46ce6389fc14a14b29ccd3..107444cb9f9dd6e8fa0b8721e3d022b4162aa7c9 100644 (file)
@@ -398,7 +398,6 @@ char *ast_process_quotes_and_slashes(char *start, char find, char replace_with);
 
 long int ast_random(void);
 
-#define ast_free free
 
 /*! 
  * \brief free() wrapper
@@ -413,6 +412,7 @@ static void ast_free_ptr(void *ptr)
        ast_free(ptr);
 }
 #else
+#define ast_free free
 #define ast_free_ptr ast_free
 #endif
 
@@ -598,19 +598,6 @@ int _ast_vasprintf(char **ret, const char *file, int lineno, const char *func, c
 }
 )
 
-#else
-
-/* If astmm is in use, let it handle these.  Otherwise, it will report that
-   all allocations are coming from this header file */
-
-#define ast_malloc(a)          malloc(a)
-#define ast_calloc(a,b)                calloc(a,b)
-#define ast_realloc(a,b)       realloc(a,b)
-#define ast_strdup(a)          strdup(a)
-#define ast_strndup(a,b)       strndup(a,b)
-#define ast_asprintf(a,b,...)  asprintf(a,b,__VA_ARGS__)
-#define ast_vasprintf(a,b,c)   vasprintf(a,b,c)
-
 #endif /* AST_DEBUG_MALLOC */
 
 #if !defined(ast_strdupa) && defined(__GNUC__)
index 417d47e23d62ed5ca25a5da46cbd312298cfbc99..7b8c61faf13cfd1338933300a2da0fddc4a12caf 100644 (file)
@@ -3473,7 +3473,7 @@ static struct ast_parkinglot *build_parkinglot(char *name, struct ast_variable *
        /* Add a parking extension into the context */
        if (!oldparkinglot) {
                if (!ast_strlen_zero(ast_parking_ext())) {
-                       if (ast_add_extension2(con, 1, ast_parking_ext(), 1, NULL, NULL, parkcall, strdup(""), ast_free, registrar) == -1)
+                       if (ast_add_extension2(con, 1, ast_parking_ext(), 1, NULL, NULL, parkcall, strdup(""), ast_free_ptr, registrar) == -1)
                                error = 1;
                }
        }
index 5544cf07975ade418b7881623c46db0facf473ce..089d7ffa54ac9f890b168c2ead3570246cb37779 100644 (file)
@@ -1682,7 +1682,7 @@ static void pbx_load_users(void)
                                c = altcopy;
                                ext = strsep(&c, ",");
                                while (ext) {
-                                       ast_add_extension2(con, 0, ext, 1, NULL, NULL, "Goto", strdup(tmp), ast_free, registrar);
+                                       ast_add_extension2(con, 0, ext, 1, NULL, NULL, "Goto", strdup(tmp), ast_free_ptr, registrar);
                                        ext = strsep(&c, ",");
                                }
                        }
index db546a314cdef7634091221ce9e2393fb3b85a60..32c1cd579432a6b0f83a22209d02c70ebd158f71 100644 (file)
@@ -169,6 +169,9 @@ refcounter: refcounter.o md5.o hashtab.o utils.o sha1.o strcompat.o threadstorag
 refcounter.o: ASTCFLAGS+=-O0 -DSTANDALONE
 
 extconf.o: extconf.c
+extconf.o: ASTCFLAGS+=-DSTANDALONE
+
+conf2ael.o: ASTCFLAGS+=-DSTANDALONE
 
 conf2ael: conf2ael.o ast_expr2f.o ast_expr2.o hashtab.o aelbison.o aelparse.o pbx_ael.o pval.o extconf.o strcompat.o
 
index a86528bd8ec1888949b6df9239cf6e5fa69565da..ebb2220a0089905360069f83b655cdd95c35407e 100644 (file)
@@ -891,10 +891,10 @@ int ast_channel_trylock(struct ast_channel *chan);
 /* from utils.h */
 
 #define ast_free free
+#define ast_free_ptr free
 
 #define MALLOC_FAILURE_MSG \
        ast_log(LOG_ERROR, "Memory Allocation Failure in function %s at line %d of %s\n", func, lineno, file);
-#ifndef __AST_DEBUG_MALLOC
 
 /*!
  * \brief A wrapper for malloc()
@@ -928,97 +928,6 @@ int ast_channel_trylock(struct ast_channel *chan);
 #define ast_vasprintf(ret, fmt, ap) \
        _ast_vasprintf((ret), __FILE__, __LINE__, __PRETTY_FUNCTION__, (fmt), (ap))
 
-#else
-
-/* If astmm is in use, let it handle these.  Otherwise, it will report that
-   all allocations are coming from this header file */
-
-#undef __ast_calloc
-#undef calloc
-#undef ast_calloc
-
-#define ast_malloc(a)          malloc(a)
-#define ast_calloc(a,b)                calloc(a,b)
-#define ast_realloc(a,b)       realloc(a,b)
-#define ast_strdup(a)          strdup(a)
-#define ast_strndup(a,b)       strndup(a,b)
-#define ast_asprintf(a,b,...)  asprintf(a,b,__VA_ARGS__)
-#define ast_vasprintf(a,b,c)   vasprintf(a,b,c)
-
-void * attribute_malloc __ast_malloc(size_t len, const char *file, int lineno, const char *func)
-{
-       void *p;
-
-       if (!(p = malloc(len)))
-               MALLOC_FAILURE_MSG;
-
-       return p;
-}
-
-void * attribute_malloc __ast_calloc(size_t num, size_t len, const char *file, int lineno, const char *func)
-{
-       void *p;
-
-       if (!(p = calloc(num, len)))
-               MALLOC_FAILURE_MSG;
-
-       return p;
-}
-
-void * attribute_malloc _ast_calloc(size_t num, size_t len, const char *file, int lineno, const char *func);
-
-void * attribute_malloc _ast_calloc(size_t num, size_t len, const char *file, int lineno, const char *func)
-{
-       void *p;
-
-       if (!(p = calloc(num, len)))
-               MALLOC_FAILURE_MSG;
-
-       return p;
-}
-
-void * attribute_malloc __ast_realloc(void *p, size_t len, const char *file, int lineno, const char *func)
-{
-       void *newp;
-
-       if (!(newp = realloc(p, len)))
-               MALLOC_FAILURE_MSG;
-
-       return newp;
-}
-
-char * attribute_malloc __ast_strdup(const char *str, const char *file, int lineno, const char *func)
-{
-       char *newstr = NULL;
-
-       if (str) {
-               if (!(newstr = strdup(str)))
-                       MALLOC_FAILURE_MSG;
-       }
-
-       return newstr;
-}
-
-char * attribute_malloc __ast_strndup(const char *str, size_t len, const char *file, int lineno, const char *func)
-{
-       char *newstr = NULL;
-
-       if (str) {
-               if (!(newstr = strndup(str, len)))
-                       MALLOC_FAILURE_MSG;
-       }
-
-       return newstr;
-}
-
-void __ast_free(void *ptr, const char *file, int lineno, const char *func)
-{
-#undef free
-       free(ptr);
-}
-
-#endif /* AST_DEBUG_MALLOC */
-
 
 static unsigned int __unsigned_int_flags_dummy;
 
@@ -1044,8 +953,6 @@ struct ast_flags {  /* stolen from utils.h */
 
 
 
-#ifndef __AST_DEBUG_MALLOC
-
 #define MALLOC_FAILURE_MSG \
        ast_log(LOG_ERROR, "Memory Allocation Failure in function %s at line %d of %s\n", func, lineno, file);
 /*!
@@ -1239,20 +1146,6 @@ int _ast_vasprintf(char **ret, const char *file, int lineno, const char *func, c
 }
 )
 
-#else
-
-/* If astmm is in use, let it handle these.  Otherwise, it will report that
-   all allocations are coming from this header file */
-
-#define ast_malloc(a)          malloc(a)
-#define ast_calloc(a,b)                calloc(a,b)
-#define ast_realloc(a,b)       realloc(a,b)
-#define ast_strdup(a)          strdup(a)
-#define ast_strndup(a,b)       strndup(a,b)
-#define ast_vasprintf(a,b,c)   vasprintf(a,b,c)
-
-#endif /* AST_DEBUG_MALLOC */
-
 #if !defined(ast_strdupa) && defined(__GNUC__)
 /*!
   \brief duplicate a string in memory from the stack
@@ -6098,7 +5991,7 @@ static int pbx_load_config(const char *config_file)
                                                lastpri = ipri;
                                                if (!ast_opt_dont_warn && !strcmp(realext, "_."))
                                                        ast_log(LOG_WARNING, "The use of '_.' for an extension is strongly discouraged and can have unexpected behavior.  Please use '_X.' instead at line %d\n", v->lineno);
-                                               if (ast_add_extension2(con, 0, realext, ipri, label, cidmatch, appl, strdup(data), ast_free, global_registrar)) {
+                                               if (ast_add_extension2(con, 0, realext, ipri, label, cidmatch, appl, strdup(data), ast_free_ptr, global_registrar)) {
                                                        ast_log(LOG_WARNING, "Unable to register extension at line %d\n", v->lineno);
                                                }
                                        }