Mercurial > hg > octave-kai > gnulib-hg
changeset 14467:d8dcb84dcdf0
realloc: document portability problem
* doc/posix-functions/realloc.texi (realloc): Mention pitfalls of
passing 0 size to realloc.
Signed-off-by: Eric Blake <eblake@redhat.com>
author | Eric Blake <eblake@redhat.com> |
---|---|
date | Thu, 24 Mar 2011 13:38:09 -0600 |
parents | d0e2ca20532c |
children | 393c747ad672 |
files | ChangeLog doc/posix-functions/realloc.texi |
diffstat | 2 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-03-24 Eric Blake <eblake@redhat.com> + + realloc: document portability problem + * doc/posix-functions/realloc.texi (realloc): Mention pitfalls of + passing 0 size to realloc. + 2011-03-23 Ben Walton <bwalton@artsci.utoronto.ca> doc: update users.txt
--- a/doc/posix-functions/realloc.texi +++ b/doc/posix-functions/realloc.texi @@ -16,6 +16,19 @@ Portability problems not fixed by Gnulib: @itemize +@item +It is not portable to call @code{realloc} with a size of 0. With a +NULL pointer argument, this is the same ambiguity as @code{malloc (0)} +on whether a unique zero-size object is created. With a non-NULL +pointer argument, C99 requires that if @code{realloc (p, 0)} returns +@code{NULL} then @code{p} is still valid. Among implementations that +obey C99, behavior varies on whether @code{realloc (p, 0)} always +fails and leaves @code{p} valid, or usually succeeds and returns a +unique zero-size object; either way, a program not suspecting these +semantics will leak memory (either the still-valid @code{p}, or the +non-NULL return value). Meanwhile, several implementations violate +C99, by always calling @code{free (p)} but returning NULL: +glibc, Cygwin @end itemize Extension: Gnulib provides a module @samp{realloc-gnu} that substitutes a