From caf652799f04d6008eae4ab793f393748f8ccd18 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Thu, 5 May 2022 20:17:43 +0100 Subject: [PATCH] SystemMonitor: Consistently use u64 for ValueFormat::text_formatter ValueFormat::text_formatter is called with a u64 retrieved from GraphWidget::m_values. However, the function pointer definition used size_t and all the users of text_formatter used int. If bytes was over ~2 billion, we would interpret bytes to be negative. We then pass this into `human_readable_size` which converts it to a u64, making it out to be about 15.9 EiB. This is fixed by making everything in the path take a u64. --- Userland/Applications/SystemMonitor/GraphWidget.h | 2 +- Userland/Applications/SystemMonitor/main.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Userland/Applications/SystemMonitor/GraphWidget.h b/Userland/Applications/SystemMonitor/GraphWidget.h index 26f078fdd2..0b8df57f9c 100644 --- a/Userland/Applications/SystemMonitor/GraphWidget.h +++ b/Userland/Applications/SystemMonitor/GraphWidget.h @@ -26,7 +26,7 @@ public: struct ValueFormat { Gfx::ColorRole graph_color_role { Gfx::ColorRole::Base }; Color text_shadow_color { Color::Transparent }; - Function text_formatter; + Function text_formatter; }; void set_value_format(size_t index, ValueFormat&& format) { diff --git a/Userland/Applications/SystemMonitor/main.cpp b/Userland/Applications/SystemMonitor/main.cpp index 83385035df..c7d64d6f07 100644 --- a/Userland/Applications/SystemMonitor/main.cpp +++ b/Userland/Applications/SystemMonitor/main.cpp @@ -661,13 +661,13 @@ void build_performance_tab(GUI::Widget& graphs_container) cpu_graph.set_max(100); cpu_graph.set_value_format(0, { .graph_color_role = ColorRole::SyntaxPreprocessorStatement, - .text_formatter = [](int value) { + .text_formatter = [](u64 value) { return String::formatted("Total: {}%", value); }, }); cpu_graph.set_value_format(1, { .graph_color_role = ColorRole::SyntaxPreprocessorValue, - .text_formatter = [](int value) { + .text_formatter = [](u64 value) { return String::formatted("Kernel: {}%", value); }, }); @@ -687,19 +687,19 @@ void build_performance_tab(GUI::Widget& graphs_container) auto& memory_graph = *graphs_container.find_descendant_of_type_named("memory_graph"); memory_graph.set_value_format(0, { .graph_color_role = ColorRole::SyntaxComment, - .text_formatter = [](int bytes) { + .text_formatter = [](u64 bytes) { return String::formatted("Committed: {}", human_readable_size(bytes)); }, }); memory_graph.set_value_format(1, { .graph_color_role = ColorRole::SyntaxPreprocessorStatement, - .text_formatter = [](int bytes) { + .text_formatter = [](u64 bytes) { return String::formatted("Allocated: {}", human_readable_size(bytes)); }, }); memory_graph.set_value_format(2, { .graph_color_role = ColorRole::SyntaxPreprocessorValue, - .text_formatter = [](int bytes) { + .text_formatter = [](u64 bytes) { return String::formatted("Kernel heap: {}", human_readable_size(bytes)); }, });