]> Savannah Git Hosting - gnulib.git/commit
safe-alloc: fix pointer implementation
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 19 Apr 2021 03:50:55 +0000 (20:50 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 19 Apr 2021 03:59:52 +0000 (20:59 -0700)
commit5d5120d76b6e540c7e78332aa8302b3244b9ea02
tree2b2fca5342515bc1c16c3e042aa27ea185f48580
parent751b5840a02cd42c42d3aaf90640d4636c4271d2
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.
ChangeLog
doc/safe-alloc.texi
lib/safe-alloc.c
lib/safe-alloc.h
modules/safe-alloc