[Bf-blender-cvs] [dda0de4a3d0] master: Fix address sanitizer overflow warnings for bit manipulation functions
Brecht Van Lommel
noreply at git.blender.org
Fri Aug 2 17:26:23 CEST 2019
Commit: dda0de4a3d09e8aed93718491f7dfb9366e8efd5
Author: Brecht Van Lommel
Date: Fri Aug 2 15:46:36 2019 +0200
Branches: master
https://developer.blender.org/rBdda0de4a3d09e8aed93718491f7dfb9366e8efd5
Fix address sanitizer overflow warnings for bit manipulation functions
Perform with unsigned int instead of signed int.
Differential Revision: https://developer.blender.org/D5402
===================================================================
M source/blender/blenlib/intern/math_bits_inline.c
===================================================================
diff --git a/source/blender/blenlib/intern/math_bits_inline.c b/source/blender/blenlib/intern/math_bits_inline.c
index ec2408e30a1..a6883c2aaba 100644
--- a/source/blender/blenlib/intern/math_bits_inline.c
+++ b/source/blender/blenlib/intern/math_bits_inline.c
@@ -28,7 +28,7 @@
#include "BLI_math_bits.h"
-MINLINE int bitscan_forward_i(int a)
+MINLINE unsigned int bitscan_forward_uint(unsigned int a)
{
BLI_assert(a != 0);
#ifdef _MSC_VER
@@ -36,28 +36,28 @@ MINLINE int bitscan_forward_i(int a)
_BitScanForward(&ctz, a);
return ctz;
#else
- return __builtin_ctz((unsigned int)a);
+ return (unsigned int)__builtin_ctz(a);
#endif
}
-MINLINE unsigned int bitscan_forward_uint(unsigned int a)
+MINLINE int bitscan_forward_i(int a)
{
- return (unsigned int)bitscan_forward_i((int)a);
+ return (int)bitscan_forward_uint((unsigned int)a);
}
-MINLINE int bitscan_forward_clear_i(int *a)
+MINLINE unsigned int bitscan_forward_clear_uint(unsigned int *a)
{
- int i = bitscan_forward_i(*a);
+ unsigned int i = bitscan_forward_uint(*a);
*a &= (*a) - 1;
return i;
}
-MINLINE unsigned int bitscan_forward_clear_uint(unsigned int *a)
+MINLINE int bitscan_forward_clear_i(int *a)
{
- return (unsigned int)bitscan_forward_clear_i((int *)a);
+ return (int)bitscan_forward_clear_uint((unsigned int *)a);
}
-MINLINE int bitscan_reverse_i(int a)
+MINLINE unsigned int bitscan_reverse_uint(unsigned int a)
{
BLI_assert(a != 0);
#ifdef _MSC_VER
@@ -65,26 +65,26 @@ MINLINE int bitscan_reverse_i(int a)
_BitScanReverse(&clz, a);
return clz;
#else
- return __builtin_clz((unsigned int)a);
+ return (unsigned int)__builtin_clz(a);
#endif
}
-MINLINE unsigned int bitscan_reverse_uint(unsigned int a)
+MINLINE int bitscan_reverse_i(int a)
{
- return (unsigned int)bitscan_reverse_i((int)a);
+ return (int)bitscan_reverse_uint((unsigned int)a);
}
-MINLINE int bitscan_reverse_clear_i(int *a)
+MINLINE unsigned int bitscan_reverse_clear_uint(unsigned int *a)
{
- int i = bitscan_reverse_i(*a);
+ unsigned int i = bitscan_reverse_uint(*a);
/* TODO(sergey): This could probably be optimized. */
- *a &= ~(1 << (sizeof(int) * 8 - i - 1));
+ *a &= ~(1 << (sizeof(unsigned int) * 8 - i - 1));
return i;
}
-MINLINE unsigned int bitscan_reverse_clear_uint(unsigned int *a)
+MINLINE int bitscan_reverse_clear_i(int *a)
{
- return (unsigned int)bitscan_reverse_clear_i((int *)a);
+ return (int)bitscan_reverse_clear_uint((unsigned int *)a);
}
MINLINE unsigned int highest_order_bit_uint(unsigned int n)
More information about the Bf-blender-cvs
mailing list