Revert "Revert "Fix potential memory leaks""

This reverts commit 2d33c20231 and
reapplies various patches for memory leaks.
The reason for the revert was a bug for a maximum duration interval
which caused sleep_for() to cause unpredictable behavior.
This commit is contained in:
Tamino Bauknecht
2023-10-23 01:14:52 +02:00
parent 521dac8086
commit dd1de3efbf
13 changed files with 90 additions and 29 deletions

View File

@@ -9,6 +9,7 @@
#include <cstdlib> // malloc
#include "modules/cpu_usage.hpp"
#include "util/scope_guard.hpp"
#if defined(__NetBSD__) || defined(__OpenBSD__)
#include <sys/sched.h>
@@ -33,6 +34,11 @@ std::vector<std::tuple<size_t, size_t>> waybar::modules::CpuUsage::parseCpuinfo(
int ncpu = sysconf(_SC_NPROCESSORS_CONF);
size_t sz = CPUSTATES * (ncpu + 1) * sizeof(pcp_time_t);
pcp_time_t *cp_time = static_cast<pcp_time_t *>(malloc(sz)), *pcp_time = cp_time;
waybar::util::scope_guard cp_time_deleter([cp_time]() {
if (cp_time) {
free(cp_time);
}
});
#if defined(__NetBSD__)
int mib[] = {
CTL_KERN,
@@ -97,6 +103,5 @@ std::vector<std::tuple<size_t, size_t>> waybar::modules::CpuUsage::parseCpuinfo(
}
cpuinfo.emplace_back(single_cp_time[CP_IDLE], total);
}
free(cp_time);
return cpuinfo;
}