From 50a6b5da92bd63570026ee4d76239197bf40048a Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 14 Jun 2020 02:49:10 +0300 Subject: [PATCH] Minor cpu_stat improvements. GitOrigin-RevId: ef6f8b0ed04ae88c9784260435e06a647babf0a1 --- tdutils/td/utils/port/Stat.cpp | 15 ++++++++++----- tdutils/td/utils/port/Stat.h | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tdutils/td/utils/port/Stat.cpp b/tdutils/td/utils/port/Stat.cpp index a72ba30ef..33c863a37 100644 --- a/tdutils/td/utils/port/Stat.cpp +++ b/tdutils/td/utils/port/Stat.cpp @@ -302,7 +302,9 @@ Status cpu_stat_self(CpuStat &stat) { constexpr int TMEM_SIZE = 10000; char mem[TMEM_SIZE]; TRY_RESULT(size, fd.read(MutableSlice(mem, TMEM_SIZE - 1))); - CHECK(size < TMEM_SIZE - 1); + if (size >= TMEM_SIZE - 1) { + return Status::Error("Failed for read /proc/self/stat"); + } mem[size] = 0; char *s = mem; @@ -338,14 +340,17 @@ Status cpu_stat_total(CpuStat &stat) { constexpr int TMEM_SIZE = 10000; char mem[TMEM_SIZE]; TRY_RESULT(size, fd.read(MutableSlice(mem, TMEM_SIZE - 1))); - CHECK(size < TMEM_SIZE - 1); + if (size >= TMEM_SIZE - 1) { + return Status::Error("Failed for read /proc/stat"); + } mem[size] = 0; - uint64 sum = 0, cur = 0; + uint64 sum = 0; + uint64 cur = 0; for (size_t i = 0; i < size; i++) { - int c = mem[i]; + char c = mem[i]; if (c >= '0' && c <= '9') { - cur = cur * 10 + (uint64)c - '0'; + cur = cur * 10 + static_cast(c) - '0'; } else { sum += cur; cur = 0; diff --git a/tdutils/td/utils/port/Stat.h b/tdutils/td/utils/port/Stat.h index 60599409b..4af3a7bfa 100644 --- a/tdutils/td/utils/port/Stat.h +++ b/tdutils/td/utils/port/Stat.h @@ -30,6 +30,7 @@ struct CpuStat { uint64 process_user_ticks{0}; uint64 process_system_ticks{0}; }; + Result cpu_stat() TD_WARN_UNUSED_RESULT; struct MemStat {