diff options
Diffstat (limited to 'src/alloc.h')
-rw-r--r-- | src/alloc.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/alloc.h b/src/alloc.h index 2c67fb7..79d7c0b 100644 --- a/src/alloc.h +++ b/src/alloc.h @@ -7,12 +7,26 @@ #include "common.h" typedef struct _arena *arena_t; +typedef struct { + void *p; + size_t sz; +} scratch_t; /* Allocate a buffer of NMEMB elements of size SIZE. If PTR is non-null then reallocate the buffer it points to. Aborts on out-of-memory or overflow. */ void *bufalloc(void *ptr, size_t nmemb, size_t size) __attribute__((returns_nonnull, warn_unused_result, alloc_size(2, 3))); +/* Alloc a buffer of NMEMB elements of size SIZE for one time use. Each + time this function is invoked previous allocations are overwritten. */ +void *tmpalloc(scratch_t *s, size_t nmemb, size_t size) + __attribute__((returns_nonnull, warn_unused_result, nonnull, + alloc_size(2, 3))); + +/* Reallocate all memory associated with S */ +void tmpfree(scratch_t *s) + __attribute__((nonnull)); + /* Allocate a buffer of NMEMB elements of size SIZE with alignment ALIGN using the arena-allocator A. */ void *arena_alloc(arena_t *a, size_t nmemb, size_t size, size_t align) |