From: Bruce Hoult Date: Thu, 29 May 2014 06:16:50 +0000 (+1200) Subject: Fix crash when using GC_malloc_many() as first allocation call X-Git-Tag: gc7_4_2~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e775cb79f731e79785541547646bf068310e3a1b;p=gc Fix crash when using GC_malloc_many() as first allocation call * mallocx.c (GC_CALL GC_generic_malloc_many): Do not dereference ok_reclaim_list if it is NULL. --- diff --git a/mallocx.c b/mallocx.c index 6a183f38..9df42da5 100644 --- a/mallocx.c +++ b/mallocx.c @@ -278,6 +278,7 @@ GC_API void GC_CALL GC_generic_malloc_many(size_t lb, int k, void **result) size_t lg; /* Length in granules. */ signed_word my_bytes_allocd = 0; struct obj_kind * ok = &(GC_obj_kinds[k]); + struct hblk ** rlh; DCL_LOCK_STATE; GC_ASSERT(lb != 0 && (lb & (GRANULE_BYTES-1)) == 0); @@ -304,8 +305,8 @@ GC_API void GC_CALL GC_generic_malloc_many(size_t lb, int k, void **result) } /* First see if we can reclaim a page of objects waiting to be */ /* reclaimed. */ - { - struct hblk ** rlh = ok -> ok_reclaim_list; + rlh = ok -> ok_reclaim_list; + if (rlh != NULL) { struct hblk * hbp; hdr * hhdr;