From aebfd1703b6a8339a5c0f60ca082a627a3dc020d Mon Sep 17 00:00:00 2001 From: jsteemann Date: Fri, 20 Jan 2017 16:26:16 -0800 Subject: [PATCH] fix non-portable behavior in encoder Summary: using ~0UL for mask uses a uint32_t at least in MSVC, but a uint64_t is required for it to work properly Closes https://github.com/facebook/rocksdb/pull/1777 Differential Revision: D4444004 Pulled By: yiwu-arbug fbshipit-source-id: 057cc42 --- utilities/col_buf_decoder.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utilities/col_buf_decoder.cc b/utilities/col_buf_decoder.cc index 60c4626e3..95d4426cc 100644 --- a/utilities/col_buf_decoder.cc +++ b/utilities/col_buf_decoder.cc @@ -136,7 +136,7 @@ size_t FixedLengthColBufDecoder::Decode(const char* src, char** dest) { col_compression_type_ == kColRleDeltaVarint) { // does not support 64 bit - uint64_t mask = (write_val & 1) ? (~0UL) : 0; + uint64_t mask = (write_val & 1) ? (~uint64_t(0)) : 0; int64_t delta = (write_val >> 1) ^ mask; write_val = last_val_ + delta;