From 59ef15b2ad6037f40d7fe4207b2b59dd11b14b8b Mon Sep 17 00:00:00 2001 From: Erdem Ersoy Date: Fri, 30 Oct 2020 19:12:17 +0300 Subject: [PATCH] Fix segmentation fault when column name is NULL. So, some columns (ex: SECATTR) can be sortable now. --- ColumnsPanel.c | 9 --------- ColumnsPanel.h | 2 -- htop.c | 10 +++++++++- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/ColumnsPanel.c b/ColumnsPanel.c index f8250197..36127bd5 100644 --- a/ColumnsPanel.c +++ b/ColumnsPanel.c @@ -135,15 +135,6 @@ ColumnsPanel* ColumnsPanel_new(Settings* settings) { return this; } -int ColumnsPanel_fieldNameToIndex(const char* name) { - for (int j = 1; j <= Platform_numberOfFields; j++) { - if (String_eq(name, Process_fields[j].name)) { - return j; - } - } - return -1; -} - void ColumnsPanel_update(Panel* super) { ColumnsPanel* this = (ColumnsPanel*) super; int size = Panel_size(super); diff --git a/ColumnsPanel.h b/ColumnsPanel.h index 68f80450..173e039b 100644 --- a/ColumnsPanel.h +++ b/ColumnsPanel.h @@ -23,8 +23,6 @@ extern const PanelClass ColumnsPanel_class; ColumnsPanel* ColumnsPanel_new(Settings* settings); -int ColumnsPanel_fieldNameToIndex(const char* name); - void ColumnsPanel_update(Panel* super); #endif diff --git a/htop.c b/htop.c index e4d437b9..e02f388a 100644 --- a/htop.c +++ b/htop.c @@ -129,7 +129,15 @@ static CommandLineSettings parseArguments(int argc, char** argv) { } exit(0); } - flags.sortKey = ColumnsPanel_fieldNameToIndex(optarg); + flags.sortKey = -1; + for (int j = 1; j < Platform_numberOfFields; j++) { + if (Process_fields[j].name == NULL) + continue; + if (String_eq(optarg, Process_fields[j].name)) { + flags.sortKey = j; + break; + } + } if (flags.sortKey == -1) { fprintf(stderr, "Error: invalid column \"%s\".\n", optarg); exit(1);