diff options
Diffstat (limited to 'liba2ps/gc-stubs.c')
-rw-r--r-- | liba2ps/gc-stubs.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/liba2ps/gc-stubs.c b/liba2ps/gc-stubs.c new file mode 100644 index 0000000..9337714 --- /dev/null +++ b/liba2ps/gc-stubs.c @@ -0,0 +1,41 @@ +/* gnulib's reallocarray, but using GC_realloc(). + + Simply #defining reallocarray in config.h does not work. + + Copyright 2022 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include <config.h> + +#include <stdlib.h> +#include <errno.h> + +#include "intprops.h" + +void * +a2ps_reallocarray(void *ptr, size_t nmemb, size_t size) +{ + size_t nbytes; + if (INT_MULTIPLY_WRAPV (nmemb, size, &nbytes)) + { + errno = ENOMEM; + return NULL; + } + + /* Rely on the semantics of GNU realloc. */ + return GC_realloc (ptr, nbytes); +} |