summaryrefslogtreecommitdiff
path: root/main/astobj2_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'main/astobj2_private.h')
-rw-r--r--main/astobj2_private.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/main/astobj2_private.h b/main/astobj2_private.h
index 0583faf7f..ef47ed774 100644
--- a/main/astobj2_private.h
+++ b/main/astobj2_private.h
@@ -43,7 +43,24 @@ struct ao2_stats {
extern struct ao2_stats ao2;
#endif /* defined(AO2_DEBUG) */
-int is_ao2_object(void *user_data);
+void log_bad_ao2(void *user_data, const char *file, int line, const char *func);
+int internal_is_ao2_object(void *user_data);
+
+#define __is_ao2_object(user_data, file, line, func) \
+ ({ \
+ int ret ## __LINE__ = 0; \
+ if (user_data) { \
+ ret ## __LINE__ = internal_is_ao2_object(user_data); \
+ } \
+ if (!ret ## __LINE__) { \
+ log_bad_ao2(user_data, file, line, func); \
+ } \
+ (ret ## __LINE__); \
+ })
+
+#define is_ao2_object(user_data) \
+ __is_ao2_object(user_data, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+
enum ao2_lock_req __adjust_lock(void *user_data, enum ao2_lock_req lock_how, int keep_stronger);
#endif /* ASTOBJ2_PRIVATE_H_ */