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:
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)