From 853dee854c60d13dfac7f7b52bd376a1bc63a4c3 Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Wed, 3 Oct 2018 12:22:03 +0300 Subject: MDEV-17358 my_reverse_bits() is incorrect due to UB my_reverse_bits(): add a cast to fix a bit shift --- include/my_bit.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/my_bit.h b/include/my_bit.h index 174e0f70083..494d899c54f 100644 --- a/include/my_bit.h +++ b/include/my_bit.h @@ -115,10 +115,10 @@ static inline uint32 my_clear_highest_bit(uint32 v) static inline uint32 my_reverse_bits(uint32 key) { return - (_my_bits_reverse_table[ key & 255] << 24) | - (_my_bits_reverse_table[(key>> 8) & 255] << 16) | - (_my_bits_reverse_table[(key>>16) & 255] << 8) | - _my_bits_reverse_table[(key>>24) ]; + ((uint32)_my_bits_reverse_table[ key & 255] << 24) | + ((uint32)_my_bits_reverse_table[(key>> 8) & 255] << 16) | + ((uint32)_my_bits_reverse_table[(key>>16) & 255] << 8) | + (uint32)_my_bits_reverse_table[(key>>24) ]; } C_MODE_END -- cgit v1.2.1