mirror of
https://github.com/official-stockfish/Stockfish.git
synced 2026-07-22 12:47:08 +00:00
Allow trailing whitespace in str_to_size_t
Fixes #6984, first reported by sqrmax on the Discord, causing incorrect detection of NUMA and L3 domains on Linux due to trailing whitespace when reading from sysfs. This was introduced by #6844 which made `str_to_size_t` too strict, since `std::stoull` allows trailing characters (and leading whitespace, although this part is not relevant for us). Before: $ ./bins/stockfish.master speedtest Stockfish dev-20260716-ebcea3ef by the Stockfish developers (see AUTHORS file) info string Using 224 threads with NUMA node thread binding: 64/32:64/32:64/32:32/16 After: $ ./stockfish speedtest Stockfish dev-20260718-m-cb702902 by the Stockfish developers (see AUTHORS file) info string Using 224 threads with NUMA node thread binding: 32/32:32/32:32/32:32/32:32/32:32/32:32/32 closes https://github.com/official-stockfish/Stockfish/pull/6989 No functional change
This commit is contained in:
committed by
Joost VandeVondele
parent
ebcea3efe9
commit
b4ea9205a6
+2
-1
@@ -554,7 +554,8 @@ std::optional<usize> str_to_size_t(const std::string& s) {
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
char* endptr = nullptr;
|
char* endptr = nullptr;
|
||||||
const unsigned long long value = std::strtoull(s.c_str(), &endptr, 10);
|
const unsigned long long value = std::strtoull(s.c_str(), &endptr, 10);
|
||||||
if (errno == ERANGE || *endptr != '\0' || value > std::numeric_limits<usize>::max())
|
if (errno == ERANGE || (*endptr != '\0' && !std::isspace(*endptr))
|
||||||
|
|| value > std::numeric_limits<usize>::max())
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
return static_cast<usize>(value);
|
return static_cast<usize>(value);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user