=================================================================== RCS file: /cvs/mandoc/mandoc_malloc.3,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- mandoc/mandoc_malloc.3 2014/08/05 05:48:56 1.1 +++ mandoc/mandoc_malloc.3 2021/09/17 18:50:21 1.3 @@ -1,4 +1,4 @@ -.\" $Id: mandoc_malloc.3,v 1.1 2014/08/05 05:48:56 schwarze Exp $ +.\" $Id: mandoc_malloc.3,v 1.3 2021/09/17 18:50:21 schwarze Exp $ .\" .\" Copyright (c) 2014 Ingo Schwarze .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: August 5 2014 $ +.Dd $Mdocdate: September 17 2021 $ .Dt MANDOC_MALLOC 3 .Os .Sh NAME @@ -22,12 +22,11 @@ .Nm mandoc_realloc , .Nm mandoc_reallocarray , .Nm mandoc_calloc , +.Nm mandoc_recallocarray , .Nm mandoc_strdup , .Nm mandoc_strndup , .Nm mandoc_asprintf .Nd memory allocation function wrappers used in the mandoc library -.Sh LIBRARY -.Lb libmandoc .Sh SYNOPSIS .In sys/types.h .In mandoc_aux.h @@ -51,6 +50,13 @@ .Fa "size_t nmemb" .Fa "size_t size" .Fc +.Ft "void *" +.Fo mandoc_recallocarray +.Fa "void *ptr" +.Fa "size_t oldnmemb" +.Fa "size_t nmemb" +.Fa "size_t size" +.Fc .Ft "char *" .Fo mandoc_strdup .Fa "const char *s" @@ -67,32 +73,32 @@ .Fa "..." .Fc .Sh DESCRIPTION -These functions call the -.Lb libc -functions of the same names, passing through their return values when -successful. +These functions call the libc functions of the same names, passing +through their return values when successful. In case of failure, they do not return, but instead call -.Xr perror 3 -and -.Xr exit 3 . -They can be used both internally by any code in the -.Lb libmandoc +.Xr err 3 . +They can be used both internally by any code in the mandoc libraries and externally by programs using that library, for example .Xr mandoc 1 , +.Xr man 1 , .Xr apropos 1 , +.Xr makewhatis 8 , and -.Xr makewhatis 8 . +.Xr man.cgi 8 . .Pp The function .Fn mandoc_malloc allocates one new object, leaving the memory uninitialized. The functions -.Fn mandoc_realloc +.Fn mandoc_realloc , +.Fn mandoc_reallocarray , and -.Fn mandoc_reallocarray +.Fn mandoc_recallocarray change the size of an existing object or array, possibly moving it. When shrinking the size, existing data is truncated; when growing, -the additional memory is not initialized. +only +.Fn mandoc_recallocarray +initializes the new elements to zero. The function .Fn mandoc_calloc allocates a new array, initializing it to zero. @@ -104,6 +110,9 @@ The argument .Fa nmemb is the new number of objects in the array. The argument +.Fa oldnmemb +is the number of objects in the array before the call. +The argument .Fa ptr is a pointer to the existing object or array to be resized; if it is .Dv NULL , @@ -149,9 +158,8 @@ These functions are implemented in .Pa mandoc_aux.c . .Sh SEE ALSO .Xr asprintf 3 , -.Xr exit 3 , +.Xr err 3 , .Xr malloc 3 , -.Xr perror 3 , .Xr strdup 3 .Sh STANDARDS The functions @@ -174,9 +182,13 @@ is a widespread extension that first appeared in the G The function .Fn reallocarray is an extension that first appeared in -.Ox 5.6 . -If it is not provided by the operating system, the mandoc build system -uses a bundled portable implementation. +.Ox 5.6 , +and +.Fn recallocarray +in +.Ox 6.1 . +If these two are not provided by the operating system, +the mandoc build system uses bundled portable implementations. .Sh HISTORY The functions .Fn mandoc_malloc , @@ -187,11 +199,12 @@ and have been available since mandoc 1.9.12, .Fn mandoc_strndup since 1.11.5, -and .Fn mandoc_asprintf -and +since 1.12.4, .Fn mandoc_reallocarray -since 1.12.4 and 1.13.0. +since 1.13.0, and +.Fn mandoc_recallocarray +since 1.14.2. .Sh AUTHORS .An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .An Ingo Schwarze Aq Mt schwarze@openbsd.org