blob: 57bec4db8bd5734fb3fd5b5e5b6098f16019f9aa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
@node calloc
@section @code{calloc}
@findex calloc
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/calloc.html}
Gnulib module: calloc-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 14.
@item
On some platforms, @code{calloc (n, s)} can succeed even if
multiplying @code{n} by @code{s} would exceed @code{PTRDIFF_MAX} or
@code{SIZE_MAX}. Although failing to check for exceeding
@code{PTRDIFF_MAX} is arguably allowed by POSIX it can lead to
undefined behavior later, so @code{calloc-posix} does not allow
going over the limit.
@end itemize
Extension: Gnulib provides a module @samp{calloc-gnu} that substitutes a
@code{calloc} implementation that behaves more like the glibc implementation.
It fixes this portability problem:
@itemize
@item
@code{calloc (0, s)} and @code{calloc (n, 0)} return @code{NULL} on success
on some platforms:
AIX 7.2.
@end itemize
|