You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
921 B
25 lines
921 B
Author: Manoj Gupta <manojgupta@google.com>
|
|
|
|
Use unsigned 1 for shifting instead of signed 1.
|
|
|
|
This fixed an issue with shift caught by undefined behavior
|
|
sanitizer in clang.
|
|
bzip2-1.0.6/blocksort.c:255:7
|
|
runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
|
|
|
|
--- a/blocksort.c
|
|
+++ b/blocksort.c
|
|
@@ -202,9 +202,9 @@ void fallbackQSort3 ( UInt32* fmap,
|
|
bhtab [ 0 .. 2+(nblock/32) ] destroyed
|
|
*/
|
|
|
|
-#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
|
|
-#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
|
|
-#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
|
|
+#define SET_BH(zz) bhtab[(zz) >> 5] |= (1u << ((zz) & 31))
|
|
+#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1u << ((zz) & 31))
|
|
+#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1u << ((zz) & 31)))
|
|
#define WORD_BH(zz) bhtab[(zz) >> 5]
|
|
#define UNALIGNED_BH(zz) ((zz) & 0x01f)
|
|
|