@@ -45,6 +45,12 @@ static void range_callback(task_t task, void *context, unsigned type, vm_range_t
45
45
}
46
46
}
47
47
48
+ static kern_return_t reader (__unused task_t remote_task, vm_address_t remote_address, __unused vm_size_t size, void **local_memory)
49
+ {
50
+ *local_memory = (void *)remote_address;
51
+ return KERN_SUCCESS;
52
+ }
53
+
48
54
+ (void )enumerateLiveObjectsUsingBlock : (flex_object_enumeration_block_t )block
49
55
{
50
56
if (!block) {
@@ -60,13 +66,13 @@ + (void)enumerateLiveObjectsUsingBlock:(flex_object_enumeration_block_t)block
60
66
61
67
vm_address_t *zones = NULL ;
62
68
unsigned int zoneCount = 0 ;
63
- kern_return_t result = malloc_get_all_zones (TASK_NULL, NULL , &zones, &zoneCount);
69
+ kern_return_t result = malloc_get_all_zones (TASK_NULL, reader , &zones, &zoneCount);
64
70
65
71
if (result == KERN_SUCCESS) {
66
72
for (unsigned int i = 0 ; i < zoneCount; i++) {
67
73
malloc_zone_t *zone = (malloc_zone_t *)zones[i];
68
74
if (zone->introspect && zone->introspect ->enumerator ) {
69
- zone->introspect ->enumerator (TASK_NULL, (__bridge void *)block, MALLOC_PTR_IN_USE_RANGE_TYPE, (vm_address_t )zone, NULL , &range_callback);
75
+ zone->introspect ->enumerator (TASK_NULL, (__bridge void *)block, MALLOC_PTR_IN_USE_RANGE_TYPE, (vm_address_t )zone, reader , &range_callback);
70
76
}
71
77
}
72
78
}
0 commit comments