From d1d1425327378e16e77e7de6e64daccf289b4cc3 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Tue, 14 May 2013 19:03:26 +0000 Subject: Make ao2 global objects not always use the debug version of the ao2_ref() calls. The debug versions of ao2_ref() should only be used if REF_DEBUG is enabled so nothing is written to /tmp/refs unexpectedly. (closes issue ASTERISK-21785) Reported by: abelbeck Patches: jira_asterisk_21785_v11.patch (license #5621) patch uploaded by rmudgett Tested by: abelbeck ........ Merged revisions 388700 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@388701 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/astobj2.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'include/asterisk') diff --git a/include/asterisk/astobj2.h b/include/asterisk/astobj2.h index 502cc744c..d8a997b9a 100644 --- a/include/asterisk/astobj2.h +++ b/include/asterisk/astobj2.h @@ -635,11 +635,20 @@ struct ao2_global_obj { * * \return Nothing */ +#ifdef REF_DEBUG #define ao2_t_global_obj_release(holder, tag) \ __ao2_global_obj_release(&holder, (tag), __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) #define ao2_global_obj_release(holder) \ __ao2_global_obj_release(&holder, "", __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#else + +#define ao2_t_global_obj_release(holder, tag) \ + __ao2_global_obj_release(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#define ao2_global_obj_release(holder) \ + __ao2_global_obj_release(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#endif + void __ao2_global_obj_release(struct ao2_global_obj *holder, const char *tag, const char *file, int line, const char *func, const char *name); /*! @@ -657,11 +666,20 @@ void __ao2_global_obj_release(struct ao2_global_obj *holder, const char *tag, co * \retval Reference to previous global ao2 object stored. * \retval NULL if no object available. */ +#ifdef REF_DEBUG #define ao2_t_global_obj_replace(holder, obj, tag) \ __ao2_global_obj_replace(&holder, (obj), (tag), __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) #define ao2_global_obj_replace(holder, obj) \ __ao2_global_obj_replace(&holder, (obj), "", __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#else + +#define ao2_t_global_obj_replace(holder, obj, tag) \ + __ao2_global_obj_replace(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#define ao2_global_obj_replace(holder, obj) \ + __ao2_global_obj_replace(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#endif + void *__ao2_global_obj_replace(struct ao2_global_obj *holder, void *obj, const char *tag, const char *file, int line, const char *func, const char *name); /*! @@ -680,10 +698,20 @@ void *__ao2_global_obj_replace(struct ao2_global_obj *holder, void *obj, const c * \retval 0 The global object was previously empty * \retval 1 The global object was not previously empty */ +#ifdef REF_DEBUG #define ao2_t_global_obj_replace_unref(holder, obj, tag) \ __ao2_global_obj_replace_unref(&holder, (obj), (tag), __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) #define ao2_global_obj_replace_unref(holder, obj) \ __ao2_global_obj_replace_unref(&holder, (obj), "", __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) + +#else + +#define ao2_t_global_obj_replace_unref(holder, obj, tag) \ + __ao2_global_obj_replace_unref(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#define ao2_global_obj_replace_unref(holder, obj) \ + __ao2_global_obj_replace_unref(&holder, (obj), NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#endif + int __ao2_global_obj_replace_unref(struct ao2_global_obj *holder, void *obj, const char *tag, const char *file, int line, const char *func, const char *name); /*! @@ -696,11 +724,20 @@ int __ao2_global_obj_replace_unref(struct ao2_global_obj *holder, void *obj, con * \retval Reference to current ao2 object stored in the holder. * \retval NULL if no object available. */ +#ifdef REF_DEBUG #define ao2_t_global_obj_ref(holder, tag) \ __ao2_global_obj_ref(&holder, (tag), __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) #define ao2_global_obj_ref(holder) \ __ao2_global_obj_ref(&holder, "", __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#else + +#define ao2_t_global_obj_ref(holder, tag) \ + __ao2_global_obj_ref(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#define ao2_global_obj_ref(holder) \ + __ao2_global_obj_ref(&holder, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__, #holder) +#endif + void *__ao2_global_obj_ref(struct ao2_global_obj *holder, const char *tag, const char *file, int line, const char *func, const char *name); -- cgit v1.2.3