diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2016-03-27 01:46:26 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2016-03-27 01:46:26 +0000 |
commit | dff6b9fdfeb78fe21a66aa459ddc1d5f7e362dfa (patch) | |
tree | b147568ccffc4cdba9e2a98de1452450ba8e55c3 /lib/util/mallocvar.h | |
parent | 4ce684c4978610d1ea42be1b00f7332f3f5f337a (diff) | |
download | netpbm-mirror-dff6b9fdfeb78fe21a66aa459ddc1d5f7e362dfa.tar.gz netpbm-mirror-dff6b9fdfeb78fe21a66aa459ddc1d5f7e362dfa.tar.xz netpbm-mirror-dff6b9fdfeb78fe21a66aa459ddc1d5f7e362dfa.zip |
Promote Advanced (10.73) to Stable
git-svn-id: http://svn.code.sf.net/p/netpbm/code/stable@2692 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/util/mallocvar.h')
-rw-r--r-- | lib/util/mallocvar.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/util/mallocvar.h b/lib/util/mallocvar.h index 1f2be127..e92e3fe4 100644 --- a/lib/util/mallocvar.h +++ b/lib/util/mallocvar.h @@ -87,7 +87,7 @@ reallocProduct(void ** const blockP, void * array; \ array = arrayName; \ reallocProduct(&array, nElements, sizeof(arrayName[0])); \ - if (!array) \ + if (!array && arrayName) \ free(arrayName); \ arrayName = array; \ } while (0) @@ -107,6 +107,21 @@ do { \ abort(); \ } while(0) +#define MALLOCARRAY2(arrayName, nRows, nCols) do { \ + void * array; \ + pm_mallocarray2(&array, nRows, nCols, sizeof(arrayName[0][0])); \ + arrayName = array; \ +} while (0) + +#define MALLOCARRAY2_NOFAIL(arrayName, nRows, nCols) do { \ + MALLOCARRAY2(arrayName, nRows, nCols); \ + if ((arrayName) == NULL) \ + abort(); \ +} while (0) + +void +pm_freearray2(void ** const rowIndex); + #define MALLOCVAR(varName) \ varName = malloc(sizeof(*varName)) @@ -114,6 +129,12 @@ do { \ #define MALLOCVAR_NOFAIL(varName) \ do {if ((varName = malloc(sizeof(*varName))) == NULL) abort();} while(0) +void +pm_mallocarray2(void ** const resultP, + unsigned int const cols, + unsigned int const rows, + unsigned int const elementSize); + #ifdef __cplusplus } #endif |