X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgetndelim2.c;h=3959462593d33460b35b072dcaca161d21c7d2e2;hb=87538f0d5dfb46f213de5dfe7ea9ac07bb4c0c9e;hp=6f0868999525c671560ad97759abc0dec2de4cff;hpb=824046ca2900f2bc9524015d5cdfa1a7ec0005e5;p=gnulib.git diff --git a/lib/getndelim2.c b/lib/getndelim2.c index 6f0868999..395946259 100644 --- a/lib/getndelim2.c +++ b/lib/getndelim2.c @@ -81,18 +81,15 @@ getndelim2 (char **lineptr, size_t *linesize, size_t nmax, size_t newlinesize = (*linesize > MIN_CHUNK ? 2 * *linesize : *linesize + MIN_CHUNK); - if (newlinesize > nmax) + if (! (*linesize < newlinesize && newlinesize <= nmax)) newlinesize = nmax; - if (newlinesize > *linesize) - { - *linesize = newlinesize; - nbytes_avail = *linesize + *lineptr - read_pos; - *lineptr = realloc (*lineptr, *linesize); - if (!*lineptr) - return -1; - read_pos = *linesize - nbytes_avail + *lineptr; - } + *linesize = newlinesize; + nbytes_avail = *linesize + *lineptr - read_pos; + *lineptr = realloc (*lineptr, *linesize); + if (!*lineptr) + return -1; + read_pos = *linesize - nbytes_avail + *lineptr; } c = getc (stream);