static void clear_context(KXLDContext *context) { KXLDObject * object = NULL; KXLDKext * dep = NULL; u_int i = 0; check(context); kxld_kext_clear(context->kext); for (i = 0; i < context->objects.nitems; ++i) { object = kxld_array_get_item(&context->objects, i); kxld_object_clear(object); } kxld_array_reset(&context->objects); for (i = 0; i < context->dependencies.nitems; ++i) { dep = kxld_array_get_item(&context->dependencies, i); kxld_kext_clear(dep); } kxld_array_reset(&context->dependencies); kxld_dict_clear(&context->defined_symbols_by_name); kxld_dict_clear(&context->defined_cxx_symbols_by_value); kxld_dict_clear(&context->obsolete_symbols_by_name); kxld_dict_clear(&context->vtables_by_name); }
void kxld_kext_clear(KXLDKext *kext) { KXLDVTable *vtable = NULL; u_int i; check(kext); for (i = 0; i < kext->vtables.nitems; ++i) { vtable = kxld_array_get_item(&kext->vtables, i); kxld_vtable_clear(vtable); } kxld_array_reset(&kext->vtables); kxld_dict_clear(&kext->vtable_index); kext->kext = NULL; kext->interface = NULL; kext->vtables_created = FALSE; kext->vtable_index_created = FALSE; }