| 789 | static _Atomic(void*) deferred_arg; // = NULL |
| 790 | |
| 791 | void _mi_deferred_free(mi_heap_t* heap, bool force) { |
| 792 | heap->tld->heartbeat++; |
| 793 | if (deferred_free != NULL && !heap->tld->recurse) { |
| 794 | heap->tld->recurse = true; |
| 795 | deferred_free(force, heap->tld->heartbeat, mi_atomic_load_ptr_relaxed(void,&deferred_arg)); |
| 796 | heap->tld->recurse = false; |
| 797 | } |
| 798 | } |
| 799 | |
| 800 | void mi_register_deferred_free(mi_deferred_free_fun* fn, void* arg) mi_attr_noexcept { |
| 801 | deferred_free = fn; |
no outgoing calls
no test coverage detected