]> 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>
Sat, 30 Jul 2016 09:08:36 +0000 (12:08 +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 aba9f46c54e2c1ee959e759163c3ce881597378e..fde085055de01975c21643e5aa990325c77ef25c 100644 (file)
@@ -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;
       }
 }