Make a few implicit truncations either explicit, or not truncate
authorChristopher Dykes <cdykes@fb.com>
Mon, 22 May 2017 23:54:41 +0000 (16:54 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Tue, 23 May 2017 00:12:01 +0000 (17:12 -0700)
Summary: This silences a few warnings under MSVC, and gets Folly closer to being able to compile with `-Wconversion` enabled.

Reviewed By: yfeldblum

Differential Revision: D5100686

fbshipit-source-id: e5e04c7aa143597e151a56a4d1f90dda26d0033b

folly/IPAddressV6.cpp
folly/experimental/EliasFanoCoding.h
folly/experimental/JemallocNodumpAllocator.cpp
folly/io/async/AsyncSSLSocket.cpp
folly/io/async/ssl/OpenSSLUtils.cpp
folly/io/test/IOBufCursorTest.cpp
folly/io/test/IOBufQueueTest.cpp
folly/test/RandomTest.cpp
folly/test/ThreadCachedArenaTest.cpp

index 57d00aa4b71f416d25dd8d04cc56ba2fd19dca0a..6f1eb5958996c5f12bb16204a6c2a3398ddf26de 100644 (file)
@@ -188,8 +188,8 @@ IPAddressV6 IPAddressV6::fromInverseArpaName(const std::string& arpaname) {
   std::array<char, IPAddressV6::kToFullyQualifiedSize> ip;
   size_t pos = 0;
   int count = 0;
-  for (int p = pieces.size() - 1; p >= 0; p--) {
-    ip[pos] = pieces[p][0];
+  for (size_t i = 1; i <= pieces.size(); i++) {
+    ip[pos] = pieces[pieces.size() - i][0];
     pos++;
     count++;
     // add ':' every 4 chars
index f7bef3a4f38eae8817b57387dfce555eea1d87a9..aa4d402965aaf7d75deba68900dab891dd389b09 100644 (file)
@@ -145,7 +145,7 @@ struct EliasFanoEncoderV2 {
         forwardPointers_(reinterpret_cast<SkipValueType*>(
               result.forwardPointers)),
         result_(result) {
-    std::fill(result.data.begin(), result.data.end(), 0);
+    std::fill(result.data.begin(), result.data.end(), '\0');
   }
 
   EliasFanoEncoderV2(size_t size, ValueType upperBound)
index 94db0e7204c203940c8281d1657d1c5f0a253c9a..80f8c2723dc870169c990591b7931372a702ceaa 100644 (file)
@@ -108,7 +108,7 @@ void JemallocNodumpAllocator::deallocate(void* p) {
 
 void JemallocNodumpAllocator::deallocate(void* p, void* userData) {
   const uint64_t flags = reinterpret_cast<uint64_t>(userData);
-  dallocx != nullptr ? dallocx(p, flags) : free(p);
+  dallocx != nullptr ? dallocx(p, static_cast<int>(flags)) : free(p);
 }
 
 JemallocNodumpAllocator& globalJemallocNodumpAllocator() {
index 3791db7dc4efc95593594f45365fd705ac6715a3..234ab5ae9917c20ca217a0028cadedbad8ceccdf 100644 (file)
@@ -702,10 +702,10 @@ void AsyncSSLSocket::connect(
   assert(sslState_ == STATE_UNINIT);
   noTransparentTls_ = true;
   totalConnectTimeout_ = totalConnectTimeout;
-  AsyncSSLSocketConnector* connector =
-      new AsyncSSLSocketConnector(this, callback, totalConnectTimeout.count());
+  AsyncSSLSocketConnector* connector = new AsyncSSLSocketConnector(
+      this, callback, int(totalConnectTimeout.count()));
   AsyncSocket::connect(
-      connector, address, connectTimeout.count(), options, bindAddr);
+      connector, address, int(connectTimeout.count()), options, bindAddr);
 }
 
 bool AsyncSSLSocket::needsPeerVerification() const {
@@ -1701,9 +1701,9 @@ int AsyncSSLSocket::bioRead(BIO* b, char* out, int outl) {
     queue.append(std::move(sslSock->preReceivedData_));
     queue.trimStart(len);
     sslSock->preReceivedData_ = queue.move();
-    return len;
+    return static_cast<int>(len);
   } else {
-    auto result = recv(OpenSSLUtils::getBioFd(b, nullptr), out, outl, 0);
+    auto result = int(recv(OpenSSLUtils::getBioFd(b, nullptr), out, outl, 0));
     if (result <= 0 && OpenSSLUtils::getBioShouldRetryWrite(result)) {
       BIO_set_retry_read(b);
     }
index 72285ac9259e6e87f84aeaec6fa67b63bb21875c..c7a0346e6634390bfca5dd9f55a36d946e730bc2 100644 (file)
@@ -120,7 +120,7 @@ bool OpenSSLUtils::validatePeerCertNames(X509* cert,
     }
   }
 
-  for (size_t i = 0; i < (size_t)sk_GENERAL_NAME_num(altNames); i++) {
+  for (int i = 0; i < sk_GENERAL_NAME_num(altNames); i++) {
     auto name = sk_GENERAL_NAME_value(altNames, i);
     if ((addr4 != nullptr || addr6 != nullptr) && name->type == GEN_IPADD) {
       // Extra const-ness for paranoia
index 36002b2a7105af2147f52da85571a7ce51742160..cfc5109db81dc0efe4b13419b141d45539abc81f 100644 (file)
@@ -538,7 +538,7 @@ TEST(IOBuf, QueueAppenderPushAtMostFillBuffer) {
   QueueAppender appender{&queue, 125};
   std::vector<uint8_t> data;
   data.resize(1000);
-  std::iota(data.begin(), data.end(), 0);
+  std::iota(data.begin(), data.end(), uint8_t(0));
   // Add 100 byte
   appender.pushAtMost(data.data(), 100);
   // Add 900 bytes
index 3b000ea8cb3f8f920be984dedbf7fb7c7bc1d1a6..a22715dace88c925c7123697e7042a1d8e8aa61a 100644 (file)
@@ -177,7 +177,7 @@ TEST(IOBufQueue, SplitZero) {
 TEST(IOBufQueue, Preallocate) {
   IOBufQueue queue(clOptions);
   queue.append(string("Hello"));
-  pair<void*,uint32_t> writable = queue.preallocate(2, 64, 64);
+  pair<void*, uint64_t> writable = queue.preallocate(2, 64, 64);
   checkConsistency(queue);
   EXPECT_NE((void*)nullptr, writable.first);
   EXPECT_LE(2, writable.second);
index a51baffe5977898d7c486069b1ba1a9cafa31581..25a2070ba0be6305561b9edfbf4eca1cc76a1f8d 100644 (file)
@@ -135,6 +135,6 @@ TEST(Random, sanity) {
     }
     EXPECT_EQ(
         vals.size(),
-        std::unordered_set<uint32_t>(vals.begin(), vals.end()).size());
+        std::unordered_set<uint64_t>(vals.begin(), vals.end()).size());
   }
 }
index ea978dc1e8216548f178bc4cbc050bf766ffe9f8..e835ae994e7f0bf1acde03d56bf3b155f9af480e 100644 (file)
@@ -58,16 +58,14 @@ void ArenaTester::allocate(size_t count, size_t maxSize) {
   for (size_t i = 0; i < count; i++) {
     size_t size = sizeDist(rnd);
     uint8_t* p = static_cast<uint8_t*>(arena_->allocate(size));
-    areas_.emplace_back(rnd() & 0xff, Range<uint8_t*>(p, size));
+    areas_.emplace_back(uint8_t(rnd() & 0xff), Range<uint8_t*>(p, size));
   }
 
   // Fill each area with a different value, to prove that they don't overlap
   // Fill in random order.
-  std::random_shuffle(
-      areas_.begin(), areas_.end(),
-      [&rnd] (int n) -> int {
-        return std::uniform_int_distribution<uint32_t>(0, n-1)(rnd);
-      });
+  std::random_shuffle(areas_.begin(), areas_.end(), [&rnd](ptrdiff_t n) {
+    return std::uniform_int_distribution<uint32_t>(0, n - 1)(rnd);
+  });
 
   for (auto& p : areas_) {
     std::fill(p.second.begin(), p.second.end(), p.first);