From: Karel Zak Date: Thu, 8 Aug 2019 13:36:04 +0000 (+0200) Subject: scriptlive: free resource at the and X-Git-Tag: v2.35-rc1~129 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=263835e82442a6bfe64c79bcdc97aa5d50fa10fb;p=thirdparty%2Futil-linux.git scriptlive: free resource at the and Signed-off-by: Karel Zak --- diff --git a/term-utils/script-playutils.c b/term-utils/script-playutils.c index 593af5dbe2..c620946da5 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 18d96d9620..53b3fd2877 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 a27dba89ed..ee41e0c1a2 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 906d9c565d..81906946e4 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); }