folly/stats/Histogram-defs.h: avoid -Wsign-compare error
authorJim Meyering <meyering@fb.com>
Wed, 7 Jan 2015 19:11:07 +0000 (11:11 -0800)
committerViswanath Sivakumar <viswanath@fb.com>
Tue, 13 Jan 2015 19:01:05 +0000 (11:01 -0800)
Summary:
* folly/stats/Histogram-defs.h (HistogramBuckets): Take the unusual
approach of converting "numBuckets" to signed, because we cannot
cast "max-min" (a known positive value) to an unsigned type --
we don't have an unsigned variant of ValueType.
This avoids the following error from gcc-4.9:

folly/stats/Histogram-defs.h:41:31: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]

Test Plan:
Run this and note there are fewer errors than before:
fbconfig --platform-all=gcc-4.9-glibc-2.20 -r folly && fbmake dbgo

Reviewed By: ldbrandy@fb.com

Subscribers: trunkagent, net-systems@, folly-diffs@

FB internal diff: D1770129

Tasks: 5941250

Signature: t1:1770129:1420745311:c447e59f1730abafdf0b962e70f0886ae1d48db1

folly/stats/Histogram-defs.h

index dbdea660bf42f1767769e1ca07a19a2e03190e67..e8740d678408698aeb609e081f47c8ffa67faa26 100644 (file)
@@ -36,7 +36,9 @@ HistogramBuckets<T, BucketT>::HistogramBuckets(ValueType bucketSize,
   CHECK_GT(bucketSize_, ValueType(0));
   CHECK_LT(min_, max_);
 
-  unsigned int numBuckets = (max - min) / bucketSize;
+  // Deliberately make this a signed type, because we're about
+  // to compare it against max-min, which is nominally signed, too.
+  int numBuckets = (max - min) / bucketSize;
   // Round up if the bucket size does not fit evenly
   if (numBuckets * bucketSize < max - min) {
     ++numBuckets;