From b6b380a67b16d35a199862e10f81bf3055b33905 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 24 Jun 2012 12:51:27 +0000 Subject: [PATCH] [RTL] Fix a bug in RtlNumberOfSetBits svn path=/trunk/; revision=56793 --- reactos/lib/rtl/bitmap.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/reactos/lib/rtl/bitmap.c b/reactos/lib/rtl/bitmap.c index fbc1f39ebe0..871556af411 100644 --- a/reactos/lib/rtl/bitmap.c +++ b/reactos/lib/rtl/bitmap.c @@ -410,16 +410,18 @@ RtlNumberOfSetBits( IN PRTL_BITMAP BitMapHeader) { PUCHAR Byte, MaxByte; - ULONG BitCount = 0; + ULONG BitCount = 0, Shift; Byte = (PUCHAR)BitMapHeader->Buffer; - MaxByte = Byte + (BitMapHeader->SizeOfBitMap + 7) / 8; + MaxByte = Byte + BitMapHeader->SizeOfBitMap / 8; - do + while (Byte < MaxByte); { BitCount += BitCountTable[*Byte++]; } - while (Byte <= MaxByte); + + Shift = 8 - (BitMapHeader->SizeOfBitMap & 7); + BitCount += BitCountTable[(*Byte) << Shift]; return BitCount; }