Loading...
--- libmalloc/libmalloc-374.60.3/tests/malloc_zone_unregister_test.c
+++ libmalloc/libmalloc-792.60.6/tests/malloc_zone_unregister_test.c
@@ -7,18 +7,29 @@
#include <darwintest.h>
+#include <mach/mach.h> // mach_task_self()
#include <malloc_private.h>
#include <malloc/malloc.h>
#include <stdlib.h>
-T_GLOBAL_META(T_META_RUN_CONCURRENTLY(true));
+T_GLOBAL_META(T_META_RUN_CONCURRENTLY(true), T_META_TAG_ALL_ALLOCATORS);
extern int32_t malloc_num_zones;
extern malloc_zone_t **malloc_zones;
+static malloc_zone_t *
+get_wrapped_zone(malloc_zone_t *zone)
+{
+ malloc_zone_t *wrapped_zone;
+ kern_return_t kr = malloc_get_wrapped_zone(mach_task_self(),
+ /*memory_reader=*/NULL, (vm_address_t)zone, (vm_address_t *)&wrapped_zone);
+ T_QUIET; T_ASSERT_EQ(kr, KERN_SUCCESS, "malloc_get_wrapped_zone() failed");
+ return wrapped_zone;
+}
+
T_DECL(malloc_zone_unregister_establish_custom_default_zone,
"Unregister all initial zones and register a custom default zone",
- T_META_ENVVAR("MallocNanoZone=1"))
+ T_META_ENVVAR("MallocNanoZone=1"), T_META_TAG_VM_PREFERRED)
{
void *ptr = malloc(7);
T_EXPECT_NOTNULL(malloc_zone_from_ptr(ptr), "can find zone for allocation");
@@ -37,20 +48,19 @@
// No zones, no results, no crash
T_EXPECT_NULL(malloc_zone_from_ptr(ptr), "cannot find zone");
- T_EXPECT_FALSE(malloc_claimed_address(ptr), "ptr not claimed");
// Create and register custom default zone
malloc_zone_t *custom_zone = malloc_create_zone(0, 0);
// Custom default zone only, no results, no crash
T_EXPECT_NULL(malloc_zone_from_ptr(ptr), "cannot find zone");
- T_EXPECT_FALSE(malloc_claimed_address(ptr), "ptr not claimed");
// Re-register initial zones
for (uint32_t i = 0; i < initial_zone_count; i++) {
malloc_zone_register(initial_zones[i]);
}
- T_EXPECT_EQ(malloc_num_zones, initial_zone_count + 1, "re-registered initial zones");
+ uint32_t additional_zone_count = get_wrapped_zone(custom_zone) ? 2 : 1;
+ T_EXPECT_EQ(malloc_num_zones, initial_zone_count + additional_zone_count, "re-registered initial zones");
// Custom default zone plus initial zones
T_EXPECT_NOTNULL(malloc_zone_from_ptr(ptr), "can find zone for allocation");