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: v7.4.6~265 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c90e02e6e556b5fd18c63a91595cf65fb6b3652;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 aba9f46c..fde08505 100644 --- a/typd_mlc.c +++ b/typd_mlc.c @@ -374,7 +374,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; } }