Skip to content

Commit 9dade98

Browse files
committed
use non-throwing string parsing when detecting CPU quota
1 parent 3acc19f commit 9dade98

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

include/tmc/detail/container_cpu_quota.ipp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "tmc/detail/container_cpu_quota.hpp"
1111

1212
#ifdef __linux__
13+
#include <charconv>
1314
#include <cstdlib>
1415
#include <cstring>
1516
#include <fstream>
@@ -198,18 +199,20 @@ container_cpu_quota query_cgroups_v2() {
198199
}
199200

200201
int64_t max_quota;
201-
try {
202-
max_quota = std::stoll(fields[0]);
203-
} catch (...) {
204-
result.status = container_cpu_status::UNKNOWN;
205-
return result;
202+
{
203+
auto& s = fields[0];
204+
auto [ptr, ec] = std::from_chars(s.data(), s.data() + s.size(), max_quota);
205+
if (ec != std::errc{} || ptr != s.data() + s.size()) {
206+
result.status = container_cpu_status::UNKNOWN;
207+
return result;
208+
}
206209
}
207210

208211
int64_t period = 100000;
209212
if (fields.size() == 2) {
210-
try {
211-
period = std::stoll(fields[1]);
212-
} catch (...) {
213+
auto& s = fields[1];
214+
auto [ptr, ec] = std::from_chars(s.data(), s.data() + s.size(), period);
215+
if (ec != std::errc{} || ptr != s.data() + s.size()) {
213216
result.status = container_cpu_status::UNKNOWN;
214217
return result;
215218
}

0 commit comments

Comments
 (0)