libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

commit 5bcf255f3daa77171ee29e298119e394cab65e19
parent 7a25119aef52149ad7c6259cffe8cfb45eb65957
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Sun, 31 Aug 2025 14:28:57 +0200

mhd_ROT{L,R}{32,64}: made implementation consistent with standard versions

Relaxed requirements for the second parameter

Diffstat:
Msrc/mhd2/mhd_bithelpers.h | 18++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/src/mhd2/mhd_bithelpers.h b/src/mhd2/mhd_bithelpers.h @@ -389,7 +389,6 @@ mhd_GET_32BIT_BE(const void *addr) /** * Rotate right 32-bit value by number of bits. - * bits parameter must be more than zero and must be less than 32. */ #if defined(_MSC_FULL_VER) && (! defined(__clang__) || (defined(__c2__) && \ defined(__OPTIMIZE__))) @@ -409,9 +408,8 @@ mhd_GET_32BIT_BE(const void *addr) MHD_static_inline_ uint32_t mhd_ROTR32 (uint32_t value32, unsigned int bits) { - mhd_assert (32 > bits); - /* Defined in form which modern compiler could optimize. */ - return (value32 >> bits) | (value32 << (32 - bits)); + bits &= 31u; + return (value32 >> bits) | (value32 << ((32u - bits) & 31u)); } @@ -420,7 +418,6 @@ mhd_ROTR32 (uint32_t value32, unsigned int bits) /** * Rotate left 32-bit value by number of bits. - * bits parameter must be more than zero and must be less than 32. */ #if defined(_MSC_FULL_VER) && (! defined(__clang__) || (defined(__c2__) && \ defined(__OPTIMIZE__))) @@ -440,9 +437,8 @@ mhd_ROTR32 (uint32_t value32, unsigned int bits) MHD_static_inline_ uint32_t mhd_ROTL32 (uint32_t value32, unsigned int bits) { - mhd_assert (32 > bits); - /* Defined in form which modern compiler could optimize. */ - return (value32 << bits) | (value32 >> (32 - bits)); + bits &= 31u; + return (value32 << bits) | (value32 >> ((32u - bits) & 31u)); } @@ -451,7 +447,6 @@ mhd_ROTL32 (uint32_t value32, unsigned int bits) /** * Rotate right 64-bit value by number of bits. - * bits parameter must be more than zero and must be less than 64. */ #if defined(_MSC_FULL_VER) && (! defined(__clang__) || (defined(__c2__) && \ defined(__OPTIMIZE__))) @@ -471,9 +466,8 @@ mhd_ROTL32 (uint32_t value32, unsigned int bits) MHD_static_inline_ uint64_t mhd_ROTR64 (uint64_t value64, unsigned int bits) { - mhd_assert (64 > bits); - /* Defined in form which modern compiler could optimise. */ - return (value64 >> bits) | (value64 << (64 - bits)); + bits &= 63u; + return (value64 >> bits) | (value64 << ((64u - bits) & 63u)); }