void of_object_delete(of_object_t *obj) { if (obj == NULL) { return; } #if defined(OF_OBJECT_TRACKING) ASSERT(obj->track_info.magic == OF_OBJECT_TRACKING_MAGIC && "of_object double free?"); LOCI_LOG_TRACE("OF obj delete %p. Wire buf %p.\n", obj, obj->wire_object.wbuf); ASSERT(TRACK->count_current > 0); TRACK->count_current -= 1; TRACK->deletes += 1; TRACK_OBJS = biglist_remove_link_free(TRACK_OBJS, obj->track_info.bl_entry); obj->track_info.magic = 0; #endif /* * Make callback if present */ if (obj->track_info.delete_cb != NULL) { obj->track_info.delete_cb(obj); } if (obj->wire_object.owned) { of_wire_buffer_free(obj->wire_object.wbuf); } FREE(obj); }
void of_object_delete(of_object_t *obj) { if (obj == NULL) { return; } if (obj->parent == NULL) { of_wire_buffer_free(obj->wbuf); } FREE(obj); }