From 098457839dcb6c935d0aa18c6459c800d4c646b2 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Wed, 20 Jul 2016 01:04:17 +0300 Subject: [PATCH] Fix integer shift undefined behavior in GC_init_explicit_typing * typd_mlc.c (GC_init_explicit_typing): Avoid left-shift by WORDSZ (which is an undefined behavior), initialize GC_bm_table[0] to GC_DS_BITMAP explicitly. --- typd_mlc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/typd_mlc.c b/typd_mlc.c index 1943f1f..f7e3b6c 100644 --- a/typd_mlc.c +++ b/typd_mlc.c @@ -373,7 +373,8 @@ STATIC void GC_init_explicit_typing(void) (void **)GC_arobjfreelist, GC_MAKE_PROC(GC_array_mark_proc_index, 0), FALSE, TRUE); - for (i = 0; i < WORDSZ/2; i++) { + GC_bm_table[0] = GC_DS_BITMAP; + for (i = 1; i < WORDSZ/2; i++) { GC_bm_table[i] = (((word)-1) << (WORDSZ - i)) | GC_DS_BITMAP; } } -- 2.7.4