From 263835e82442a6bfe64c79bcdc97aa5d50fa10fb Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 8 Aug 2019 15:36:04 +0200 Subject: [PATCH] scriptlive: free resource at the and Signed-off-by: Karel Zak --- term-utils/script-playutils.c | 13 ++++++++++++- term-utils/script-playutils.h | 2 +- term-utils/scriptlive.c | 6 +++--- term-utils/scriptreplay.c | 2 ++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/term-utils/script-playutils.c b/term-utils/script-playutils.c index 593af5dbe..c620946da 100644 --- a/term-utils/script-playutils.c +++ b/term-utils/script-playutils.c @@ -102,7 +102,18 @@ static inline void timerinc(struct timeval *a, struct timeval *b) struct replay_setup *replay_new_setup(void) { - return xcalloc(1, sizeof(struct replay_setup)); + return xcalloc(1, sizeof(struct replay_setup)); +} + +void replay_free_setup(struct replay_setup *stp) +{ + if (!stp) + return; + + free(stp->logs); + free(stp->step.name); + free(stp->step.value); + free(stp); } /* if timing file does not contains types of entries (old format) than use this diff --git a/term-utils/script-playutils.h b/term-utils/script-playutils.h index 18d96d962..53b3fd287 100644 --- a/term-utils/script-playutils.h +++ b/term-utils/script-playutils.h @@ -27,7 +27,7 @@ struct replay_step; void replay_init_debug(void); struct replay_setup *replay_new_setup(void); - +void replay_free_setup(struct replay_setup *stp); int replay_set_default_type(struct replay_setup *stp, char type); int replay_set_crmode(struct replay_setup *stp, int mode); diff --git a/term-utils/scriptlive.c b/term-utils/scriptlive.c index a27dba89e..ee41e0c1a 100644 --- a/term-utils/scriptlive.c +++ b/term-utils/scriptlive.c @@ -318,8 +318,6 @@ main(int argc, char *argv[]) cb->child_sigstop = child_sigstop; cb->mainloop = mainloop_cb; - sigprocmask(SIG_BLOCK, NULL, ul_pty_get_orig_sigset(ss.pty)); - if (ul_pty_setup(ss.pty)) err(EXIT_FAILURE, "failed to create pseudo-terminal"); @@ -378,7 +376,9 @@ main(int argc, char *argv[]) } ul_pty_cleanup(ss.pty); - fprintf(stdout, _("\n>>> scriptlive: done. <<<\n")); + ul_free_pty(ss.pty); + replay_free_setup(ss.setup); + fprintf(stdout, _("\n>>> scriptlive: done. <<<\n")); return EXIT_SUCCESS; } diff --git a/term-utils/scriptreplay.c b/term-utils/scriptreplay.c index 906d9c565..81906946e 100644 --- a/term-utils/scriptreplay.c +++ b/term-utils/scriptreplay.c @@ -307,5 +307,7 @@ main(int argc, char *argv[]) replay_get_timing_file(setup), replay_get_timing_line(setup)); printf("\n"); + replay_free_setup(setup); + exit(EXIT_SUCCESS); }