From: Bruno Haible Date: Sat, 28 Aug 2010 14:22:14 +0000 (+0200) Subject: read-file: Don't occupy too much unused memory. X-Git-Tag: v0.1~3893 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=32a3eff7f5191d76a82be7db1190a98ed9ef55d0;p=gnulib.git read-file: Don't occupy too much unused memory. --- diff --git a/ChangeLog b/ChangeLog index 8a3233903..d4eaed748 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-08-28 Bruno Haible + + read-file: Don't occupy too much unused memory. + * lib/read-file.c (fread_file): Shrink the buffer at the end. + 2010-08-28 Giuseppe Scrivano Eric Blake Bruno Haible diff --git a/lib/read-file.c b/lib/read-file.c index 27241b450..0a15c5a45 100644 --- a/lib/read-file.c +++ b/lib/read-file.c @@ -119,6 +119,15 @@ fread_file (FILE * stream, size_t * length) save_errno = errno; if (ferror (stream)) break; + + /* Shrink the allocated memory if possible. */ + if (size + 1 < alloc) + { + char *smaller_buf = realloc (buf, size + 1); + if (smaller_buf != NULL) + buf = smaller_buf; + } + buf[size] = '\0'; *length = size; return buf;