diff --git a/ChangeLog b/ChangeLog index 28765868d6..461d21fe26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jun 10 16:05:59 2013 Koichi Sasada + + * gc.c (wmap_mark): check allocation of `w->obj2wmap'. + (no-allocation `w->obj2wmap' will be NULL pointer reference) + Mon Jun 10 15:36:00 2013 Nobuyoshi Nakada * eval_error.c (error_print): use checking functions instead of diff --git a/gc.c b/gc.c index aaaff2bf55..2a39022c95 100644 --- a/gc.c +++ b/gc.c @@ -4613,7 +4613,7 @@ static void wmap_mark(void *ptr) { struct weakmap *w = ptr; - st_foreach(w->obj2wmap, wmap_mark_map, (st_data_t)&rb_objspace); + if (w->obj2wmap) st_foreach(w->obj2wmap, wmap_mark_map, (st_data_t)&rb_objspace); rb_gc_mark(w->final); }