+ ok(!lock_bad, "%u locks on bad pointer", lock_bad);
+ ok(!lock_failed, "lock_failed count %u should be zero", lock_failed);
+ ok(!unlock_failed, "unlock_failed count %u should be zero",
+ unlock_failed);
+ ok(realloc_called == 1, "our realloc should not be called again");
+
+ torture_local_talloc(ctx);
+ ok(!lock_bad, "%u locks on bad pointer", lock_bad);
+ ok(!lock_failed, "lock_failed count %u should be zero", lock_failed);
+ ok(!unlock_failed, "unlock_failed count %u should be zero",
+ unlock_failed);
+ ok(realloc_called, "our realloc should be called");
+ ok(!realloc_bad, "our realloc given unknown pointer %u times",
+ realloc_bad);
+
+ talloc_free(ctx);
+ ok(!lock_bad, "%u locks on bad pointer", lock_bad);
+ ok(!lock_failed, "lock_failed count %u should be zero", lock_failed);
+ ok(!unlock_failed, "unlock_failed count %u should be zero",
+ unlock_failed);
+ ok(realloc_called, "our realloc should be called");
+ ok(!realloc_bad, "our realloc given unknown pointer %u times",
+ realloc_bad);
+
+ ok(allocations_used() == 0, "%u allocations still used?",
+ allocations_used());
+
+ /* This closes the leak, but make sure we're not freeing unexpected. */
+ ok1(!talloc_chunk_from_ptr(null_context)->child);
+ talloc_disable_null_tracking();
+