summaryrefslogtreecommitdiff
path: root/fnlz_mlc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fnlz_mlc.c')
-rw-r--r--fnlz_mlc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fnlz_mlc.c b/fnlz_mlc.c
index 1e1a6ed0..283566ee 100644
--- a/fnlz_mlc.c
+++ b/fnlz_mlc.c
@@ -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,