From: Ivan Maidanski Date: Tue, 19 Jul 2016 22:04:17 +0000 (+0300) Subject: Fix integer shift undefined behavior in GC_init_explicit_typing X-Git-Tag: gc7_6_0~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=098457839dcb6c935d0aa18c6459c800d4c646b2;p=gc 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. --- diff --git a/typd_mlc.c b/typd_mlc.c index 1943f1fe..f7e3b6c8 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; } }