diff options
author | Brad King <brad.king@kitware.com> | 2018-10-02 19:09:12 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-10-02 19:40:29 (GMT) |
commit | 6d288846178a1b75e9d50578d710265516ce8f82 (patch) | |
tree | 5ad1a970ae76464037705eb909a495b368332fe7 /Source/CTest | |
parent | 3bb8dda0479388277293d2d1949c1c294826d296 (diff) | |
download | CMake-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.h | 8 |
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 |