talloc_free_children can only reset pool if it's empty
[jelmer/samba4-debian.git] / source / lib / talloc / talloc.c
index 9e935b892c22ba6e4be7485b5903eb076e16618f..35ed447e45c723c21146d2d045ee26a90d388cb4 100644 (file)
@@ -866,7 +866,8 @@ void talloc_free_children(void *ptr)
                }
        }
 
-       if (tc->flags & TALLOC_FLAG_POOL) {
+       if ((tc->flags & TALLOC_FLAG_POOL)
+           && (*talloc_pool_objectcount(tc) == 1)) {
                tc->pool = ((char *)tc + TC_HDR_SIZE + TALLOC_POOL_HDR_SIZE);
 #if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_NOACCESS)
                VALGRIND_MAKE_MEM_NOACCESS(