summaryrefslogtreecommitdiffstats
path: root/htop.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2013-02-26 20:24:27 +0000
committerHisham Muhammad <hisham@gobolinux.org>2013-02-26 20:24:27 +0000
commitee5dc46fee6de72dbfd14de447ccf18d9fb9cd7a (patch)
tree4324d0c21db3b255198b681e836a360b7b0f2123 /htop.c
parenta0810561f3bb86910ce0f43d9d673d29c576fcbb (diff)
Don't end up killing init if process selected to be killed terminates before the user selects a signal. Closes #3606072.
Diffstat (limited to 'htop.c')
-rw-r--r--htop.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/htop.c b/htop.c
index cdee8eeb..de9df527 100644
--- a/htop.c
+++ b/htop.c
@@ -217,9 +217,10 @@ static Object* pickFromVector(Panel* panel, Panel* list, int x, int y, const cha
Panel* panelFocus;
int ch;
bool unfollow = false;
+ Process* p = (Process*)Panel_getSelected(panel);
+ int pid = p ? p->pid : -1;
if (header->pl->following == -1) {
- Process* p = (Process*)Panel_getSelected(panel);
- header->pl->following = p ? p->pid : -1;
+ header->pl->following = pid;
unfollow = true;
}
ScreenManager_run(scr, &panelFocus, &ch);
@@ -231,7 +232,11 @@ static Object* pickFromVector(Panel* panel, Panel* list, int x, int y, const cha
Panel_resize(panel, COLS, LINES-y-1);
FunctionBar_draw(prevBar, NULL);
if (panelFocus == list && ch == 13) {
- return Panel_getSelected(list);
+ Process* selected = (Process*)Panel_getSelected(panel);
+ if (selected->pid == pid)
+ return Panel_getSelected(list);
+ else
+ beep();
}
return NULL;
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy