diff options
Diffstat (limited to 'fnlz_mlc.c')
-rw-r--r-- | fnlz_mlc.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -45,6 +45,7 @@ STATIC int GC_CALLBACK GC_finalized_disclaim(void *obj) const struct GC_finalizer_closure *fc = (struct GC_finalizer_closure *)(fc_word & ~(word)FINALIZER_CLOSURE_FLAG); + GC_ASSERT(!GC_find_leak); (*fc->proc)((word *)obj + 1, fc->cd); } return 0; @@ -85,8 +86,11 @@ GC_API void GC_CALL GC_register_disclaim_proc(int kind, GC_disclaim_proc proc, { GC_ASSERT((unsigned)kind < MAXOBJKINDS); GC_ASSERT(NONNULL_ARG_NOT_NULL(proc)); - GC_obj_kinds[kind].ok_disclaim_proc = proc; - GC_obj_kinds[kind].ok_mark_unconditionally = (GC_bool)mark_unconditionally; + if (!EXPECT(GC_find_leak, FALSE)) { + GC_obj_kinds[kind].ok_disclaim_proc = proc; + GC_obj_kinds[kind].ok_mark_unconditionally = + (GC_bool)mark_unconditionally; + } } GC_API GC_ATTR_MALLOC void * GC_CALL GC_finalized_malloc(size_t lb, |