From 0a005f499cf39822166dd4db3d2d31f0639f1b1b Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 5 Jul 2020 13:49:55 -0400 Subject: fix C implementation of a_clz_32 this broke mallocng size_to_class on archs without a native implementation of a_clz_32. the incorrect logic seems to have been something i derived from a related but distinct log2-type operation. with the change made here, it passes an exhaustive test. as this function is new and presently only used by mallocng, no other functionality was affected. --- src/internal/atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/internal') diff --git a/src/internal/atomic.h b/src/internal/atomic.h index 99539cc0..96c1552d 100644 --- a/src/internal/atomic.h +++ b/src/internal/atomic.h @@ -319,7 +319,7 @@ static inline int a_clz_64(uint64_t x) #define a_clz_32 a_clz_32 static inline int a_clz_32(uint32_t x) { - x--; + x >>= 1; x |= x >> 1; x |= x >> 2; x |= x >> 4; -- cgit v1.2.3-70-g09d2