Module Name:    src
Committed By:   martin
Date:           Wed Mar 21 11:09:27 UTC 2018

Modified Files:
        src/sys/sys [netbsd-7-1]: bitops.h

Log Message:
Pull up following revision(s) (requested by mrg in ticket #1582):
        sys/sys/bitops.h: revision 1.12
        sys/sys/bitops.h: revision 1.13
        sys/sys/bitops.h: revision 1.14
fix sign issues

use 1ul for a left shift that may be greater than int sized.
noticed by martin.
fixes PR#53081.

PR/53081: Fix size of the shift to depend on the type of the bitmap so that
we get the correct width.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.11.22.1 src/sys/sys/bitops.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/sys/bitops.h
diff -u src/sys/sys/bitops.h:1.11 src/sys/sys/bitops.h:1.11.22.1
--- src/sys/sys/bitops.h:1.11	Fri Dec  7 02:27:58 2012
+++ src/sys/sys/bitops.h	Wed Mar 21 11:09:27 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bitops.h,v 1.11 2012/12/07 02:27:58 christos Exp $	*/
+/*	$NetBSD: bitops.h,v 1.11.22.1 2018/03/21 11:09:27 martin Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2010 The NetBSD Foundation, Inc.
@@ -271,8 +271,8 @@ fast_divide32_prepare(uint32_t _div, uin
 	_l = fls32(_div - 1);
 	_mt = (uint64_t)(0x100000000ULL * ((1ULL << _l) - _div));
 	*_m = (uint32_t)(_mt / _div + 1);
-	*_s1 = (_l > 1) ? 1 : _l;
-	*_s2 = (_l == 0) ? 0 : _l - 1;
+	*_s1 = (_l > 1) ? 1U : (uint8_t)_l;
+	*_s2 = (_l == 0) ? 0 : (uint8_t)(_l - 1);
 }
 
 /* ARGSUSED */
@@ -304,7 +304,7 @@ fast_remainder32(uint32_t _v, uint32_t _
 #define __BITMAP_SIZE(__t, __n) \
     (((__n) + (__BITMAP_BITS(__t) - 1)) / __BITMAP_BITS(__t))
 #define __BITMAP_BIT(__n, __v) \
-    (1 << ((__n) & __BITMAP_MASK(*(__v)->_b)))
+    ((__typeof__((__v)->_b[0]))1 << ((__n) & __BITMAP_MASK(*(__v)->_b)))
 #define __BITMAP_WORD(__n, __v) \
     ((__n) >> __BITMAP_SHIFT(*(__v)->_b))
 

Reply via email to