Merged revisions 192059 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
  r192059 | kpfleming | 2009-05-04 18:24:16 +0200 (Mon, 04 May 2009) | 5 lines
  
  Ensure that astobj2 memory allocations are properly accounted for when MALLOC_DEBUG is used
  
  This commit ensures that all astobj2 allocated objects are properly accounted for in MALLOC_DEBUG mode by passing down the file/function/line information from the module/function that actually called the astobj2 allocation function.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@192154 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin P. Fleming
2009-05-04 19:20:58 +00:00
parent 2075905520
commit ed8fb52309
2 changed files with 56 additions and 11 deletions

View File

@@ -130,7 +130,6 @@ static inline struct astobj2 *INTERNAL_OBJ(void *user_data)
/* the underlying functions common to debug and non-debug versions */
static int __ao2_ref(void *user_data, const int delta);
static void *__ao2_alloc(size_t data_size, ao2_destructor_fn destructor_fn);
static struct ao2_container *__ao2_container_alloc(struct ao2_container *c, const uint n_buckets, ao2_hash_fn *hash_fn,
ao2_callback_fn *cmp_fn);
static struct bucket_list *__ao2_link(struct ao2_container *c, void *user_data);
@@ -298,7 +297,7 @@ static int __ao2_ref(void *user_data, const int delta)
* We always alloc at least the size of a void *,
* for debugging purposes.
*/
static void *__ao2_alloc(size_t data_size, ao2_destructor_fn destructor_fn)
static void *__ao2_alloc(size_t data_size, ao2_destructor_fn destructor_fn, char *file, int line, const char *funcname)
{
/* allocation */
struct astobj2 *obj;
@@ -306,7 +305,11 @@ static void *__ao2_alloc(size_t data_size, ao2_destructor_fn destructor_fn)
if (data_size < sizeof(void *))
data_size = sizeof(void *);
#if defined(__AST_DEBUG_MALLOC)
obj = __ast_calloc(1, sizeof(*obj) + data_size, file, line, funcname);
#else
obj = ast_calloc(1, sizeof(*obj) + data_size);
#endif
if (obj == NULL)
return NULL;
@@ -333,7 +336,7 @@ void *_ao2_alloc_debug(size_t data_size, ao2_destructor_fn destructor_fn, char *
void *obj;
FILE *refo = fopen(REF_FILE,"a");
obj = __ao2_alloc(data_size, destructor_fn);
obj = __ao2_alloc(data_size, destructor_fn, file, line, funcname);
if (obj == NULL)
return NULL;
@@ -349,7 +352,7 @@ void *_ao2_alloc_debug(size_t data_size, ao2_destructor_fn destructor_fn, char *
void *_ao2_alloc(size_t data_size, ao2_destructor_fn destructor_fn)
{
return __ao2_alloc(data_size, destructor_fn);
return __ao2_alloc(data_size, destructor_fn, NULL, 0, NULL);
}