From 7abcbe80e51a1d1fd70e2788ea7e4011a872abad Mon Sep 17 00:00:00 2001 From: Ed Ralston Date: Thu, 19 May 2022 20:01:57 -0400 Subject: [PATCH] Prevent segfault in getCpuFrequency When parseCpuFrequencies returns an empty vector, getCpuFrequency would attempt to dereference an invalid iterator. Return early from getCpuFrequency when parseCpuFrequencies returns an empty vector. Resolves a segfault when waybar is run within a VM on apple silicon. --- src/modules/cpu/common.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/cpu/common.cpp b/src/modules/cpu/common.cpp index 9fc58211..e46b74af 100644 --- a/src/modules/cpu/common.cpp +++ b/src/modules/cpu/common.cpp @@ -94,6 +94,10 @@ std::tuple, std::string> waybar::modules::Cpu::getCpuUsage std::tuple waybar::modules::Cpu::getCpuFrequency() { std::vector frequencies = parseCpuFrequencies(); + if (frequencies.empty()) + { + return {0.f, 0.f, 0.f}; + } auto [min, max] = std::minmax_element(std::begin(frequencies), std::end(frequencies)); float avg_frequency = std::accumulate(std::begin(frequencies), std::end(frequencies), 0.0) / frequencies.size();