Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH] fix several memory leaks
- X-seq: zsh-workers 43224
- From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: [PATCH] fix several memory leaks
- Date: Mon, 30 Jul 2018 14:47:39 +0100 (BST)
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ntlworld.com; s=meg.feb2017; t=1532958460; bh=6tS8TfPBWjhAGtSMU/iunT2e4fprCDyj1RDMCTWh6Pw=; h=Date:From:To:In-Reply-To:References:Subject; b=i37xYn++jP6mZ5j2njyi/xf97bcR66ZndEu4sr5wFUeytaiPK/8UU54DmiDDTQ+qm YyR7iX51adhBPcNPfD5i23HM8rt5K9/XraoVE8OgffQx1X33bLs3JU84nYZM9fuHuz lZZKDl41l8JEjoCeD0yk5rPapZ3qtsyXGnFyWhWv3+0hfsjor/nj7oXSpJpTwKifP/ 0CxvDJP3ozremy18PPnbGwHr8OkdLQ8F+CWVoUeWoowkc/uo7qgHXkLAt92ah4A/ZZ 6wwGX+xHsedruzO9kiWnAUz512bjs2qA3ZwgDfUNuiNkXOHCPpGDc4E6gPocp7xhJy zGkmmVx2mK7zA==
- Importance: Medium
- In-reply-to: <8CE35533-3221-4A9D-94D9-07B4DEF54C80@kba.biglobe.ne.jp>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- List-unsubscribe: <mailto:zsh-workers-unsubscribe@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <8CE35533-3221-4A9D-94D9-07B4DEF54C80@kba.biglobe.ne.jp>
> On 28 July 2018 at 17:34 "Jun T." <takimoto-j@xxxxxxxxxxxxxxxxx> wrote:
> Here is a list of memory leaks I found and their possible
> fixes. Please check the patches at the end of the post,
> especially those for init.c and termcap.c/terminfo.c.
Thanks.
> diff --git a/Src/Modules/termcap.c b/Src/Modules/termcap.c
> index 60a6e138a..71257c5e9 100644
> --- a/Src/Modules/termcap.c
> +++ b/Src/Modules/termcap.c
> @@ -353,7 +353,8 @@ boot_(UNUSED(Module m))
> * mean the modules hasn't booted---TERM may change,
> * and it should be handled dynamically---so ignore errors here.
> */
> - (void)setupterm((char *)0, 1, &errret);
> + if (!cur_term) /* if zsh/terminfo is not loaded */
> + (void)setupterm((char *)0, 1, &errret);
> # endif
> #endif
> return 0;
If setupterm(), over which we have no control, is really a problem we probably
need a front-end with a lock to make sure it only ever gets called once.
Something like a function in utils.c which as the #ifdef buried in it
and simply does nothing if we don't HAVE_SETUPTERM, for example?
> diff --git a/Src/init.c b/Src/init.c
> index c5372665a..e9e6be9b4 100644
> --- a/Src/init.c
> +++ b/Src/init.c
> @@ -459,7 +459,8 @@ parseopts(char *nam, char ***argvp, char *new_opts, char **cmdp,
> /* -c command */
> *cmdp = *argv;
> new_opts[INTERACTIVE] &= 1;
> - scriptname = scriptfilename = ztrdup("zsh");
> + if (toplevel)
> + scriptname = scriptfilename = ztrdup("zsh");
> } else if (**argv == 'o') {
> if (!*++*argv)
> argv++;
Hmm... I'm not quite sure how this case is even supposed to work when dealing with
options not at top level. But simply leaving the value alone, as you've done,
seems absolutely fine.
pws
Messages sorted by:
Reverse Date,
Date,
Thread,
Author