*/
static void *null_context;
static void *autofree_context;
+static unsigned int flags;
/* used to enable fill of memory on free, which can be useful for
* catching use after free errors when valgrind is too slow
talloc_log_fn = log_fn;
}
+int talloc_set_flag(unsigned int flag)
+{
+ if (flag != TALLOC_FLAG_WARN_MAY_REFERENCE) {
+ return -1;
+ }
+ flags |= flag;
+ return 0;
+}
+
+int talloc_unset_flag(unsigned int flag)
+{
+ if (flag != TALLOC_FLAG_WARN_MAY_REFERENCE) {
+ return -1;
+ }
+ flags |= ~flag;
+ return 0;
+}
+
static void talloc_log(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2);
static void talloc_log(const char *fmt, ...)
{
if (unlikely(ptr == NULL)) return NULL;
tc = talloc_chunk_from_ptr(ptr);
+ if ((flags & TALLOC_FLAG_WARN_MAY_REFERENCE) && !(tc->flags & TALLOC_FLAG_MAY_REF)) {
+ talloc_log("talloc_reference on non-may_reference pointer at %s)", location);
+ }
+
handle = (struct talloc_reference_handle *)_talloc_named_const(context,
sizeof(struct talloc_reference_handle),
TALLOC_MAGIC_REFERENCE);