guile-devel
[Top][All Lists]
Advanced

[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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]