From 9854c8e873eaf736231965f890207ce2c0a5511f Mon Sep 17 00:00:00 2001 From: Bruce Hoult Date: Thu, 29 May 2014 18:16:50 +1200 Subject: [PATCH] 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. --- mallocx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mallocx.c b/mallocx.c index b559371..c8895a1 100644 --- a/mallocx.c +++ b/mallocx.c @@ -288,6 +288,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); @@ -314,8 +315,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; -- 2.7.4