Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-08-02 16:46:36 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-08-02 18:25:25 +0300
commitdda0de4a3d09e8aed93718491f7dfb9366e8efd5 (patch)
tree277a3cb4a3b4fa4ca10d3f5b10d6b4ad07927ee3
parent256c412b316755a9d6c0ad94b3e3139b27a27476 (diff)
Fix address sanitizer overflow warnings for bit manipulation functions
Perform with unsigned int instead of signed int. Differential Revision: https://developer.blender.org/D5402
-rw-r--r--source/blender/blenlib/intern/math_bits_inline.c34
1 files changed, 17 insertions, 17 deletions
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)