[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] Fix memory leak on `realloc' failure
From: |
dsmich |
Subject: |
Re: [PATCH 1/2] Fix memory leak on `realloc' failure |
Date: |
Thu, 10 Apr 2014 12:36:48 -0400 |
---- address@hidden wrote:
> From: Dmitry Bogatov <address@hidden>
>
> Signed-off-by: Dmitry Bogatov <address@hidden>
> ---
> libguile/script.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/libguile/script.c b/libguile/script.c
> index 052ab8d..7b737f7 100644
> --- a/libguile/script.c
> +++ b/libguile/script.c
> @@ -247,7 +247,10 @@ script_read_arg (FILE *f)
> size = (size + 1) * 2;
> buf = realloc (buf, size);
> if (! buf)
> - return 0;
> + {
> + free (buf);
> + return 0;
> + }
> }
> buf[len++] = c;
> break;
> @@ -330,7 +333,10 @@ scm_get_meta_args (int argc, char **argv)
> while ((narg = script_read_arg (f)))
> if (!(nargv = (char **) realloc (nargv,
> (1 + ++nargc) * sizeof (char *))))
> + {
> + free (nargv);
> return 0L;
> + }
> else
> nargv[nargi++] = narg;
> fclose (f);
I don't understand this. In both cases, free() will be called with an argument
of 0, which does nothing.
-Dale