From 36352c44fda0000793007bd9407dcf39e59f85bf Mon Sep 17 00:00:00 2001 From: Benjamin Kietzman Date: Thu, 11 Feb 2021 09:50:08 -0500 Subject: [PATCH] ARROW-11595: [C++][NIGHTLY:test-conda-cpp-valgrind] Avoid branching on potentially indeterminate values in GenerateBitsUnrolled --- cpp/src/arrow/util/bitmap_generate.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/src/arrow/util/bitmap_generate.h b/cpp/src/arrow/util/bitmap_generate.h index 5a146f64db3..129fa913231 100644 --- a/cpp/src/arrow/util/bitmap_generate.h +++ b/cpp/src/arrow/util/bitmap_generate.h @@ -77,7 +77,7 @@ void GenerateBitsUnrolled(uint8_t* bitmap, int64_t start_offset, int64_t length, if (bit_mask != 0x01) { current_byte = *cur & BitUtil::kPrecedingBitmask[start_bit_offset]; while (bit_mask != 0 && remaining > 0) { - current_byte = g() ? (current_byte | bit_mask) : current_byte; + current_byte |= g() * bit_mask; bit_mask = static_cast(bit_mask << 1); --remaining; } @@ -100,7 +100,7 @@ void GenerateBitsUnrolled(uint8_t* bitmap, int64_t start_offset, int64_t length, current_byte = 0; bit_mask = 0x01; while (remaining_bits-- > 0) { - current_byte = g() ? (current_byte | bit_mask) : current_byte; + current_byte |= g() * bit_mask; bit_mask = static_cast(bit_mask << 1); } *cur++ = current_byte;