From: Petter Urkedal Date: Wed, 11 Apr 2012 19:11:03 +0000 (+0200) Subject: Fix bug in finalized allocation. X-Git-Tag: gc7_3alpha2~24^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c1405932f87664e8324824c0f5e09af58cba1dc5;p=gc Fix bug in finalized allocation. * fnlz_mlc.c (GC_register_disclaim_proc): Make sure to re-read our GC_size_map entry after calling GC_generic_malloc, in case it had to be extended. --- diff --git a/fnlz_mlc.c b/fnlz_mlc.c index 12767aa5..763d3b0c 100644 --- a/fnlz_mlc.c +++ b/fnlz_mlc.c @@ -102,12 +102,15 @@ GC_API void GC_CALL GC_register_disclaim_proc(int kind, GC_disclaim_proc proc, op = GC_generic_malloc((word)lb, GC_finalized_kind); if (NULL == op) return NULL; + /* GC_generic_malloc have have extended the size map for us. */ + lg = GC_size_map[lb]; } else { *opp = obj_link(op); obj_link(op) = 0; GC_bytes_allocd += GRANULES_TO_BYTES(lg); UNLOCK(); } + GC_ASSERT(lg > 0); ((const void **)op)[GRANULES_TO_WORDS(lg) - 1] = fclos; } else { size_t op_sz;