summaryrefslogtreecommitdiffstats
path: root/Source/CTest
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-10-02 19:09:12 (GMT)
committerBrad King <brad.king@kitware.com>2018-10-02 19:40:29 (GMT)
commit6d288846178a1b75e9d50578d710265516ce8f82 (patch)
tree5ad1a970ae76464037705eb909a495b368332fe7 /Source/CTest
parent3bb8dda0479388277293d2d1949c1c294826d296 (diff)
downloadCMake-6d288846178a1b75e9d50578d710265516ce8f82.zip
CMake-6d288846178a1b75e9d50578d710265516ce8f82.tar.gz
CMake-6d288846178a1b75e9d50578d710265516ce8f82.tar.bz2
cmCTestRunTest: Avoid float/int conversions in number width logic
Use of `std::log10` added by commit 02c5091c90 (cmCTestRunTest: Simplify number width computation, 2018-09-08) broke our number width computation on some platforms where static_cast<int>(std::log10(static_cast<size_t>(10))) somehow produces `0` instead of `1`. Re-implement the logic to avoid floating-point computations.
Diffstat (limited to 'Source/CTest')
-rw-r--r--Source/CTest/cmCTestRunTest.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h
index 48a5064..10dceca 100644
--- a/Source/CTest/cmCTestRunTest.h
+++ b/Source/CTest/cmCTestRunTest.h
@@ -5,7 +5,6 @@
#include "cmConfigure.h" // IWYU pragma: keep
-#include <cmath>
#include <set>
#include <stddef.h>
#include <string>
@@ -122,7 +121,12 @@ private:
inline int getNumWidth(size_t n)
{
- return static_cast<int>(std::log10(n)) + 1;
+ int w = 1;
+ while (n >= 10) {
+ n /= 10;
+ ++w;
+ }
+ return w;
}
#endif