diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-04-13 10:58:25 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-04-13 10:58:25 +0300 |
commit | c94c41be952af8be29166fca886bbb11b3fe3330 (patch) | |
tree | 23ab404e69463100a8ec1f5d40a35f324f460b5c /regex_internal.h | |
parent | 10602a79c47b0bf6ef53b7308355ef2d4312003e (diff) | |
parent | 06a351f8774409db0d9c72ac4a51652f7c855c06 (diff) | |
download | egawk-c94c41be952af8be29166fca886bbb11b3fe3330.tar.gz egawk-c94c41be952af8be29166fca886bbb11b3fe3330.tar.bz2 egawk-c94c41be952af8be29166fca886bbb11b3fe3330.zip |
Merge branch 'master' into feature/regex-type
Diffstat (limited to 'regex_internal.h')
-rw-r--r-- | regex_internal.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/regex_internal.h b/regex_internal.h index 9aab5e52..6a870f23 100644 --- a/regex_internal.h +++ b/regex_internal.h @@ -467,8 +467,38 @@ static unsigned int re_string_context_at (const re_string_t *input, int idx, # endif #endif +/* + * GAWK checks for zero-size allocations everywhere else, + * do it here too. + */ +#ifndef GAWK #define re_malloc(t,n) ((t *) malloc ((n) * sizeof (t))) #define re_realloc(p,t,n) ((t *) realloc (p, (n) * sizeof (t))) +#else +static void * +test_malloc(size_t count, const char *file, size_t line) +{ + if (count == 0) { + fprintf(stderr, "%s:%d: allocation of zero bytes\n", + file, line); + exit(1); + } + return malloc(count); +} + +static void * +test_realloc(void *p, size_t count, const char *file, size_t line) +{ + if (count == 0) { + fprintf(stderr, "%s:%d: reallocation of zero bytes\n", + file, line); + exit(1); + } + return realloc(p, count); +} +#define re_malloc(t,n) ((t *) test_malloc (((n) * sizeof (t)), __FILE__, __LINE__)) +#define re_realloc(p,t,n) ((t *) test_realloc (p, (n) * sizeof (t), __FILE__, __LINE__)) +#endif #define re_free(p) free (p) struct bin_tree_t |