diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2023-04-10 08:16:21 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2023-04-27 14:09:26 +0300 |
commit | a6bab1b3eecdcb97de2eca8d38510df761352f98 (patch) | |
tree | 5dc83497bfec42acad1c9a1f41de435cbff9b3a6 | |
parent | 9f9b8b36bab3690b0b4e0b65e93b0e2e6d5d9cd3 (diff) | |
download | bdwgc-a6bab1b3eecdcb97de2eca8d38510df761352f98.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
@@ -87,7 +87,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 { @@ -249,6 +249,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 |