]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix error's produced by astmm.h when standard allocators are used. 17/417/1
authorCorey Farrell <git@cfware.com>
Fri, 8 May 2015 17:30:26 +0000 (13:30 -0400)
committerCorey Farrell <git@cfware.com>
Fri, 8 May 2015 19:38:03 +0000 (15:38 -0400)
astmm.h includes defines that are meant to cause error's when standard
allocators (malloc, calloc, free, etc) are used.  It actually only
causes a warning, which is not always caught on certain sources.  In
modules this unknown symbol is not detected until runtime, where the
module fails to load.  This modifies the define's so that using one
of the blocked functions will cause a compile error regardless of
CFLAGS.

Moved spandsp header includes to before asterisk.h so the static inline
functions can continue using malloc and free.  Although these functions
are never called and optimized away, the updated replacement macro's
would still cause a failure.

Change-Id: I532640aca0913ba9da3b18c04a0f010ca1715af5

include/asterisk/astmm.h
res/res_fax_spandsp.c

index 6086509ab73631c451bff9e7abc36a871159b2c1..1d778d4c5388c5eaf8980492825b5510f453d10c 100644 (file)
@@ -95,21 +95,21 @@ void __ast_mm_init_phase_2(void);
        __ast_vasprintf(a,b,c,__FILE__, __LINE__, __PRETTY_FUNCTION__)
 #else
 #define calloc(a,b) \
-       Do_not_use_calloc__use_ast_calloc(a,b)
+       Do_not_use_calloc__use_ast_calloc->fail(a,b)
 #define malloc(a) \
-       Do_not_use_malloc__use_ast_malloc(a)
+       Do_not_use_malloc__use_ast_malloc->fail(a)
 #define free(a) \
-       Do_not_use_free__use_ast_free_or_ast_std_free_for_remotely_allocated_memory(a)
+       Do_not_use_free__use_ast_free_or_ast_std_free_for_remotely_allocated_memory->fail(a)
 #define realloc(a,b) \
-       Do_not_use_realloc__use_ast_realloc(a,b)
+       Do_not_use_realloc__use_ast_realloc->fail(a,b)
 #define strdup(a) \
-       Do_not_use_strdup__use_ast_strdup(a)
+       Do_not_use_strdup__use_ast_strdup->fail(a)
 #define strndup(a,b) \
-       Do_not_use_strndup__use_ast_strndup(a,b)
+       Do_not_use_strndup__use_ast_strndup->fail(a,b)
 #define asprintf(a, b, c...) \
-       Do_not_use_asprintf__use_ast_asprintf(a,b,c)
+       Do_not_use_asprintf__use_ast_asprintf->fail(a,b,c)
 #define vasprintf(a,b,c) \
-       Do_not_use_vasprintf__use_ast_vasprintf(a,b,c)
+       Do_not_use_vasprintf__use_ast_vasprintf->fail(a,b,c)
 #endif
 
 /* Provide our own definitions */
index 288f91dac098f116cab2344c1c445cba14ca7b19..42492273d8a0058766a87ec1740879c7e3089460 100644 (file)
        <support_level>extended</support_level>
 ***/
 
-#include "asterisk.h"
-
-ASTERISK_REGISTER_FILE()
-
+/* Include spandsp headers before asterisk.h so the inline functions can continue using
+ * malloc and free, even with MALLOC_DEBUG enabled. */
 #define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
 #include <spandsp.h>
 #include <spandsp/version.h>
 
+#include "asterisk.h"
+
+ASTERISK_REGISTER_FILE()
+
 #include "asterisk/logger.h"
 #include "asterisk/module.h"
 #include "asterisk/strings.h"