rcx

library of miscellaneous bits of C code
git clone git://git.rr3.xyz/rcx
Log | Files | Refs | README | LICENSE

commit 56cd1562904aa0fa8b98d19c0fa4dc28ae107454
parent e9da33ddf58417928c1401d645797379a4ef89c1
Author: robert <robertrussell.72001@gmail.com>
Date:   Wed, 10 Aug 2022 13:19:48 -0700

Remove -f allocators

They were just API bloat.

Diffstat:
Minc/cext/alloc.h | 13+------------
Msrc/alloc.c | 51+++++++++------------------------------------------
2 files changed, 10 insertions(+), 54 deletions(-)

diff --git a/inc/cext/alloc.h b/inc/cext/alloc.h @@ -2,38 +2,27 @@ #include "cext/def.h" -/* TODO: the -f allocators are a bit much; let's remove them */ - -/* A consistently-named set of memory allocators: {,e}{,re}alloc{,n,f}{,z} +/* A consistently-named set of memory allocators: {,e}{,re}alloc{,n}{,z} * e- => allocation failures are fatal * re- => realloc-style allocator * -n => array allocator (with overflow check) - * -f => struct with flexible array member allocator (with overflow check) * -z => new memory initialized to 0. * All these allocators are interoperable with the stdlib allocators. */ void *alloc(usize size); /* aka malloc */ void *allocz(usize size); void *allocn(usize len, usize size); void *allocnz(usize len, usize size); /* aka calloc */ -void *allocf(usize hsize, usize flen, usize fsize); -void *allocfz(usize hsize, usize flen, usize fsize); void *realloc(void *p, usize size); void *reallocz(void *p, usize osize, usize nsize); void *reallocn(void *p, usize len, usize size); void *reallocnz(void *p, usize olen, usize nlen, usize size); -void *reallocf(void *p, usize hsize, usize flen, usize fsize); -void *reallocfz(void *p,usize hsize, usize oflen, usize nflen, usize fsize); void *ealloc(usize size); void *eallocz(usize size); void *eallocn(usize len, usize size); void *eallocnz(usize len, usize size); -void *eallocf(usize hsize, usize flen, usize fsize); -void *eallocfz(usize hsize, usize flen, usize fsize); void *erealloc(void *p, usize size); void *ereallocz(void *p, usize osize, usize nsize); void *ereallocn(void *p, usize len, usize size); void *ereallocnz(void *p, usize olen, usize nlen, usize size); -void *ereallocf(void *p, usize hsize, usize flen, usize fsize); -void *ereallocfz(void *p, usize hsize, usize oflen, usize nflen, usize fsize); void free(void *p); diff --git a/src/alloc.c b/src/alloc.c @@ -16,11 +16,6 @@ mul_will_overflow(usize a, usize b) { && a > 0 && USIZE_MAX/a < b; } -static inline bool -addmul_will_overflow(usize a, usize b, usize c) { /* a + b*c */ - return mul_will_overflow(b, c) || a > USIZE_MAX - b*c; -} - void * alloc(usize size) { return malloc(size); @@ -33,30 +28,16 @@ allocz(usize size) { void * allocn(usize len, usize size) { - return allocf(0, len, size); -} - -void * -allocnz(usize len, usize size) { - return calloc(len, size); -} - -void * -allocf(usize hsize, usize flen, usize fsize) { - if (addmul_will_overflow(hsize, flen, fsize)) { + if (mul_will_overflow(len, size)) { errno = ENOMEM; return 0; } - return alloc(hsize + flen*fsize); + return alloc(len * size); } void * -allocfz(usize hsize, usize flen, usize fsize) { - if (addmul_will_overflow(hsize, flen, fsize)) { - errno = ENOMEM; - return 0; - } - return allocz(hsize + flen*fsize); +allocnz(usize len, usize size) { + return calloc(len, size); } void * @@ -69,30 +50,20 @@ reallocz(void *p, usize osize, usize nsize) { void * reallocn(void *p, usize len, usize size) { - return reallocf(p, 0, len, size); -} - -void * -reallocnz(void *p, usize olen, usize nlen, usize size) { - return reallocfz(p, 0, olen, nlen, size); -} - -void * -reallocf(void *p, usize hsize, usize flen, usize fsize) { - if (addmul_will_overflow(hsize, flen, fsize)) { + if (mul_will_overflow(len, size)) { errno = ENOMEM; return 0; } - return realloc(p, hsize + flen*fsize); + return realloc(p, len * size); } void * -reallocfz(void *p, usize hsize, usize oflen, usize nflen, usize fsize) { - if (addmul_will_overflow(hsize, nflen, fsize)) { +reallocnz(void *p, usize olen, usize nlen, usize size) { + if (mul_will_overflow(nlen, size)) { errno = ENOMEM; return 0; } - return reallocz(p, hsize + oflen*fsize, hsize + nflen*fsize); + return reallocz(p, olen * size, nlen * size); } #define EALLOC(name, ...)\ @@ -108,11 +79,7 @@ EALLOC(alloc, usize size)(size) EALLOC(allocz, usize size)(size) EALLOC(allocn, usize len, usize size)(len, size) EALLOC(allocnz, usize len, usize size)(len, size) -EALLOC(allocf, usize hsize, usize flen, usize fsize)(hsize, flen, fsize) -EALLOC(allocfz, usize hsize, usize flen, usize fsize)(hsize, flen, fsize) EALLOC(realloc, void *p, usize size)(p, size) EALLOC(reallocz, void *p, usize osize, usize nsize)(p, osize, nsize) EALLOC(reallocn, void *p, usize len, usize size)(p, len, size) EALLOC(reallocnz, void *p, usize olen, usize nlen, usize size)(p, olen, nlen, size) -EALLOC(reallocf, void *p, usize hsize, usize flen, usize fsize)(p, hsize, flen, fsize) -EALLOC(reallocfz, void *p, usize hsize, usize oflen, usize nflen, usize fsize)(p, hsize, oflen, nflen, fsize)