diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2016-08-19 12:07:31 +0300 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-08-19 12:07:31 +0300 |
commit | aedc3fe19fac368dc363050e0387d263b7e01cc6 (patch) | |
tree | d72598a6c9d97ed1865d0f0ddc8ca9dc5c202c9b /procps | |
parent | b11be131b73fd47e12b1a9f1c52ac0a1ed222aee (diff) |
top: move free(prev_hist) out of signal path
It was seen being called recursively on repeated signals,
leading to double free
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'procps')
-rw-r--r-- | procps/top.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/procps/top.c b/procps/top.c index 73cd285f0..6f7f7d382 100644 --- a/procps/top.c +++ b/procps/top.c @@ -728,12 +728,6 @@ static void reset_term(void) { if (!OPT_BATCH_MODE) tcsetattr_stdin_TCSANOW(&initial_settings); - if (ENABLE_FEATURE_CLEAN_UP) { - clearmems(); -# if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE - free(prev_hist); -# endif - } } static void sig_catcher(int sig) @@ -1258,5 +1252,11 @@ int top_main(int argc UNUSED_PARAM, char **argv) #if ENABLE_FEATURE_USE_TERMIOS reset_term(); #endif + if (ENABLE_FEATURE_CLEAN_UP) { + clearmems(); +#if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE + free(prev_hist); +#endif + } return EXIT_SUCCESS; } |