From b7d8b6ebcd5dd714bc21acf7637d9a651e2f7ea7 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Wed, 21 Jun 2017 09:57:24 -0400 Subject: Add ezalloc macro in gawk and API to allocate zero-filled memory. --- awk.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index ab84c58b..d5964f88 100644 --- a/awk.h +++ b/awk.h @@ -1331,6 +1331,7 @@ DEREF(NODE *r) __LINE__, __FILE__) #define emalloc(var,ty,x,str) (void) (var = (ty) emalloc_real((size_t)(x), str, #var, __FILE__, __LINE__)) +#define ezalloc(var,ty,x,str) (void) (var = (ty) ezalloc_real((size_t)(x), str, #var, __FILE__, __LINE__)) #define erealloc(var,ty,x,str) (void) (var = (ty) erealloc_real((void *) var, (size_t)(x), str, #var, __FILE__, __LINE__)) #define efree(p) free(p) @@ -1950,6 +1951,24 @@ emalloc_real(size_t count, const char *where, const char *var, const char *file, return ret; } +/* ezalloc_real --- malloc zero-filled bytes with error checking */ + +static inline void * +ezalloc_real(size_t count, const char *where, const char *var, const char *file, int line) +{ + void *ret; + + if (count == 0) + fatal("%s:%d: ezalloc called with zero bytes", file, line); + + ret = (void *) calloc(1, count); + if (ret == NULL) + fatal(_("%s:%d:%s: %s: can't allocate %ld bytes of memory (%s)"), + file, line, where, var, (long) count, strerror(errno)); + + return ret; +} + /* erealloc_real --- realloc with error checking */ static inline void * -- cgit v1.2.3 From 44e29458a6355ad64e8d89676a441b224ce76cbc Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Fri, 23 Jun 2017 12:36:13 +0300 Subject: Fix parenthesization in the pretty printer for real (we hope!). --- awk.h | 1 + 1 file changed, 1 insertion(+) (limited to 'awk.h') diff --git a/awk.h b/awk.h index d5964f88..1ed5a4ef 100644 --- a/awk.h +++ b/awk.h @@ -736,6 +736,7 @@ typedef enum opcodeval { Op_K_else, Op_K_function, Op_cond_exp, + Op_parens, Op_final /* sentry value, not legal */ } OPCODE; -- cgit v1.2.3