folly test: fix typo in RandomDataHolder::RandomDataHolder
authorJim Meyering <meyering@fb.com>
Mon, 9 May 2016 21:05:43 +0000 (14:05 -0700)
committerFacebook Github Bot 6 <facebook-github-bot-6-bot@fb.com>
Mon, 9 May 2016 21:20:25 +0000 (14:20 -0700)
Summary:
Running the folly/io/test:compression_test with a UBSAN-enabled binary would fail with this:

  folly/io/test/CompressionTest.cpp:96:36: runtime error: shift exponent 16777216 is too large for 64-bit type 'size_t' (aka 'unsigned long')

That exposed the unwanted left-shift.
That made it so the actual "start" offsets were in the range [0..numThreads-1], rather than being
e.g., with numThreads == 8, [0, 1677721633554432, ...].  Oops.

Reviewed By: luciang

Differential Revision: D3277606

fbshipit-source-id: 4bc48f84b0065de070b62a810f08b96e36ea7136

folly/io/test/CompressionTest.cpp

index 020d74876ae3d7464902abee12638af37efcf3d1..8fe347f1d9df9431273d7261dd820dd855ac6b70 100644 (file)
@@ -92,7 +92,7 @@ RandomDataHolder::RandomDataHolder(size_t sizeLog2)
     threads.emplace_back(
         [this, seed, t, numThreadsLog2, sizeLog2] () {
           std::mt19937 rng(seed + t);
-          size_t countLog2 = size_t(1) << (sizeLog2 - numThreadsLog2);
+          size_t countLog2 = sizeLog2 - numThreadsLog2;
           size_t start = size_t(t) << countLog2;
           for (size_t i = 0; i < countLog2; ++i) {
             this->data_[start + i] = rng();