Jim Meyering <[EMAIL PROTECTED]> writes: > Hi Simon, > > I noticed that our getdelim replacement can leak when the initial realloc > fails. While that can happen only when *N is 0 and *LINEPTR is malloc'd, > I think it's worth fixing, if only to avoid further discussion on the topic. > > Here's the fix. > > Ok to apply?
Yes, please do. Thanks for careful code review. /Simon > * lib/getdelim.c (getdelim): Don't leak memory upon failed realloc. > > diff --git a/lib/getdelim.c b/lib/getdelim.c > index 0547c7f..7c6f326 100644 > --- a/lib/getdelim.c > +++ b/lib/getdelim.c > @@ -69,13 +69,15 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE > *fp) > > if (*lineptr == NULL || *n == 0) > { > + char *new_lineptr; > *n = 120; > - *lineptr = (char *) realloc (*lineptr, *n); > - if (*lineptr == NULL) > + new_lineptr = (char *) realloc (*lineptr, *n); > + if (new_lineptr == NULL) > { > result = -1; > goto unlock_return; > } > + *lineptr = new_lineptr; > } > > for (;;) > -- > 1.5.4.3.341.g956c8c