Hash :
5d5120d7
Author :
Date :
2021-04-18T20:50:55
safe-alloc: fix pointer implementation The old implementation assumed that all pointers use the same internal representation, but the C standard doesn’t guarantee this. Use void * (pointer) not void ** (pointer-to-pointer) for the internal functions’ API. The internal functions now return NULL if and only if they failed, and the macros translate that into -1 or 0 to satisfy the existing API. * doc/safe-alloc.texi (Safe Allocation Macros): Mention overflow. * lib/safe-alloc.c: Major rewrite. Now this simply defines SAFE_ALLOC_INLINE and includes safe-alloc.h. * lib/safe-alloc.h: Include stddef.h, not stdlib.h. (SAFE_ALLOC_INLINE): New macro; use Gnulib inline function style. (safe_alloc_realloc_n): New API, which passes and returns the pointer, and which returns NULL if and only if failure occurs. (safe_alloc_check): New function. (ALLOC, ALLOC_N, ALLOC_N_UNINITIALIZED, REALLOC_N): Redo using the new API for internal functions, and using calloc which is good enough since it’s GNU-compatible now. (FREE): Expand to an expression rather than merely to something that needs a following ‘;’ to become a statement. * modules/safe-alloc (Depends-on): Add calloc-gnu.
Description:
A set of macros to make calls to alloc/calloc/realloc safer.
Files:
lib/safe-alloc.h
lib/safe-alloc.c
m4/safe-alloc.m4
Depends-on:
calloc-gnu
reallocarray
configure.ac:
gl_SAFE_ALLOC
Makefile.am:
lib_SOURCES += safe-alloc.c
Include:
"safe-alloc.h"
License:
LGPLv2+
Maintainer:
David Lutterkort