Fix a corner case in EliasFanoReader::previousValue
[folly.git] / folly / experimental / EliasFanoCoding.h
index 6a7d4779bbdcf774719b7bafbd9cfb49f6b00e27..f75fabde98c8ecd1e134cf627d9dfa5583d8d355 100644 (file)
@@ -473,8 +473,8 @@ class UpperBitsReader {
     block &= (block_t(1) << inner_) - 1;
 
     while (UNLIKELY(block == 0)) {
-      DCHECK_GE(outer, sizeof(block_t));
-      outer -= sizeof(block_t);
+      DCHECK_GT(outer, 0);
+      outer -= std::min(sizeof(block_t), outer);
       block = folly::loadUnaligned<block_t>(start_ + outer);
     }