summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2015-05-08 13:30:26 -0400
committerCorey Farrell <git@cfware.com>2015-05-08 15:38:03 -0400
commit2d4dc0c9639f52fb8db3dc9a8e5c59a4a0cac401 (patch)
tree344b25345f595319267e25d7d738c9f846b94817
parentf93b3a22d6217e28059a92f9d24fce055f8b3f3c (diff)
Fix error's produced by astmm.h when standard allocators are used.
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
-rw-r--r--include/asterisk/astmm.h16
-rw-r--r--res/res_fax_spandsp.c10
2 files changed, 14 insertions, 12 deletions
diff --git a/include/asterisk/astmm.h b/include/asterisk/astmm.h
index 6086509ab..1d778d4c5 100644
--- a/include/asterisk/astmm.h
+++ b/include/asterisk/astmm.h
@@ -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 */
diff --git a/res/res_fax_spandsp.c b/res/res_fax_spandsp.c
index 288f91dac..42492273d 100644
--- a/res/res_fax_spandsp.c
+++ b/res/res_fax_spandsp.c
@@ -48,14 +48,16 @@
<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"