]> granicus.if.org Git - gc/commitdiff
Fix integer shift undefined behavior in GC_init_explicit_typing
authorIvan Maidanski <ivmai@mail.ru>
Tue, 19 Jul 2016 22:04:17 +0000 (01:04 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 19 Jul 2016 22:04:17 +0000 (01:04 +0300)
* 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

index 1943f1fe0bbcd1949190f5b31de231b7726883f9..f7e3b6c8d92d21dcd7eb1f6bd4c735d0ce9a4183 100644 (file)
@@ -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;
       }
 }