in src/block.cpp [81:103]
inline DISPATCH_ALWAYS_INLINE ~dispatch_block_private_data_s() noexcept
{
_dispatch_block_private_data_debug("destroy%s, block: %p",
dbpd_magic ? "" : " (stack)", dbpd_block);
#if DISPATCH_INTROSPECTION
void *db = (char *) this - sizeof(struct Block_layout);
_dispatch_ktrace1(DISPATCH_QOS_TRACE_private_block_dispose, db);
#endif /* DISPATCH_INTROSPECTION */
if (dbpd_magic != DISPATCH_BLOCK_PRIVATE_DATA_MAGIC) return;
if (dbpd_group) {
if (!dbpd_performed) dispatch_group_leave(dbpd_group);
_os_object_release(dbpd_group->_as_os_obj);
}
if (dbpd_queue) {
_os_object_release_internal_n(dbpd_queue->_as_os_obj, 2);
}
if (dbpd_block) Block_release(dbpd_block);
if (dbpd_voucher && dbpd_voucher != DISPATCH_NO_VOUCHER) {
voucher_release(dbpd_voucher);
}
}