commit c9b3f6352f68a03b5380db0e459a8cd6407c5603
parent 6e5e4f92ab8f63dfaed00a3dfeab7222c3e153a3
Author: Nick Mathewson <nickm@torproject.org>
Date: Wed, 3 Jan 2018 08:59:52 -0500
Merge branch 'bug24633_029' into maint-0.2.9
Diffstat:
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/changes/bug24633 b/changes/bug24633
@@ -0,0 +1,5 @@
+ o Minor bugfixes (portability, msvc):
+ - Fix a bug in the bit-counting parts of our timing-wheel code on
+ MSVC. (Note that MSVC is still not a supported build platform,
+ due to cyptographic timing channel risks.) Fixes bug 24633;
+ bugfix on 0.2.9.1-alpha.
diff --git a/src/ext/timeouts/timeout-bitops.c b/src/ext/timeouts/timeout-bitops.c
@@ -40,7 +40,7 @@ static __inline int clz32(unsigned long val)
{
DWORD zeros = 0;
_BitScanReverse(&zeros, val);
- return zeros;
+ return 31 - zeros;
}
#ifdef _WIN64
/* According to the documentation, these only exist on Win64. */
@@ -54,7 +54,7 @@ static __inline int clz64(uint64_t val)
{
DWORD zeros = 0;
_BitScanReverse64(&zeros, val);
- return zeros;
+ return 63 - zeros;
}
#else
static __inline int ctz64(uint64_t val)