*(typeof(pool)*)(((char *)__i) + __p->size) = __p; \
} while (0)
+# define POOL_DEBUG_RESET_MARK(pool, item) \
+ do { \
+ typeof(pool) __p = (pool); \
+ typeof(item) __i = (item); \
+ *(typeof(pool)*)(((char *)__i) + __p->size) = __builtin_return_address(0); \
+ } while (0)
+
# define POOL_DEBUG_CHECK_MARK(pool, item) \
do { \
typeof(pool) __p = (pool); \
# define POOL_EXTRA_MARK (0)
# define POOL_DEBUG_SET_MARK(pool, item) do { } while (0)
+# define POOL_DEBUG_RESET_MARK(pool, item) do { } while (0)
# define POOL_DEBUG_CHECK_MARK(pool, item) do { } while (0)
#endif // DEBUG_MEMORY_POOLS
#endif
/* we'll get late corruption if we refill to the wrong pool or double-free */
POOL_DEBUG_CHECK_MARK(pool, ptr);
+ POOL_DEBUG_RESET_MARK(pool, ptr);
if (unlikely(mem_poison_byte >= 0))
memset(ptr, mem_poison_byte, pool->size);