diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2023-04-10 08:16:21 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2023-04-28 19:49:14 +0300 |
commit | c1d1915271e51bb1d725e3d1191c14e0181b1a57 (patch) | |
tree | d5eec8b990dee2193b6535836d62d94761eb72ab | |
parent | 9c6c618cc6512cbe4449acae4417a785c67da4ac (diff) | |
download | bdwgc-c1d1915271e51bb1d725e3d1191c14e0181b1a57.tar.gz |
Do not prohibit zero proc argument in GC_register_disclaim_proc
(a cherry-pick of commit d4c4a7ba5 from 'master')
* fnlz_mlc.c [ENABLE_DISCLAIM] (GC_register_disclaim_proc): Do not
check that proc is non-zero.
* include/gc_disclaim.h (GC_register_disclaim_proc): Remove
GC_ATTR_NONNULL(2) attribute.
* reclaim.c [ENABLE_DISCLAIM] (GC_disclaim_and_reclaim): Add assertion
that disclaim is non-zero.
-rw-r--r-- | fnlz_mlc.c | 1 | ||||
-rw-r--r-- | include/gc_disclaim.h | 2 | ||||
-rw-r--r-- | reclaim.c | 1 |
3 files changed, 2 insertions, 2 deletions
@@ -89,7 +89,6 @@ GC_API void GC_CALL GC_register_disclaim_proc(int kind, GC_disclaim_proc proc, int mark_unconditionally) { GC_ASSERT((unsigned)kind < MAXOBJKINDS); - GC_ASSERT(NONNULL_ARG_NOT_NULL(proc)); if (!EXPECT(GC_find_leak, FALSE)) { GC_obj_kinds[kind].ok_disclaim_proc = proc; GC_obj_kinds[kind].ok_mark_unconditionally = diff --git a/include/gc_disclaim.h b/include/gc_disclaim.h index 6394b05e..785182b5 100644 --- a/include/gc_disclaim.h +++ b/include/gc_disclaim.h @@ -43,7 +43,7 @@ typedef int (GC_CALLBACK * GC_disclaim_proc)(void * /*obj*/); /* No-op in the leak-finding mode. */ GC_API void GC_CALL GC_register_disclaim_proc(int /*kind*/, GC_disclaim_proc /*proc*/, - int /*mark_from_all*/) GC_ATTR_NONNULL(2); + int /*mark_from_all*/); /* The finalizer closure used by GC_finalized_malloc. */ struct GC_finalizer_closure { @@ -239,6 +239,7 @@ STATIC ptr_t GC_reclaim_uninit(struct hblk *hbp, hdr *hhdr, word sz, struct obj_kind *ok = &GC_obj_kinds[hhdr->hb_obj_kind]; int (GC_CALLBACK *disclaim)(void *) = ok->ok_disclaim_proc; + GC_ASSERT(disclaim != 0); # ifndef THREADS GC_ASSERT(sz == hhdr -> hb_sz); # endif |