mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-16 01:22:18 +03:00
* doc/gnulib-intro.texi (Target Platforms): Classify MSVC as "rarely tested". * doc/posix-functions/*.texi: Update with info about MSVC 9. * doc/posix-headers/*.texi: Likewise. * doc/pastposix-functions/*.texi: Likewise. * doc/glibc-functions/*.texi: Likewise. * doc/glibc-headers/*.texi: Likewise.
36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
@node realloc
|
|
@section @code{realloc}
|
|
@findex realloc
|
|
|
|
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/realloc.html}
|
|
|
|
Gnulib module: realloc-posix
|
|
|
|
Portability problems fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
Upon failure, the function does not set @code{errno} to @code{ENOMEM} on
|
|
some platforms:
|
|
mingw, MSVC 9.
|
|
@end itemize
|
|
|
|
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
|
|
@code{realloc} implementation that behaves more like the glibc implementation.
|