From ea03b44757f3d4fc5e17a96cc74ff2d3d8a317ec Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 4 Sep 2026 20:40:22 +0000 Subject: Simplify the alloc callback function FossilOrigin-Name: a08c14408099c9287646e3fcac0df8dfa04d23cd08273f6b17abe7bff79e0942 --- src/bin/main.c | 38 +++++++++++++++++++------------------- src/include/aplwc.h | 2 +- src/lib/main.c | 3 +-- src/lib/memory.c | 2 +- 4 files changed, 22 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/bin/main.c b/src/bin/main.c index a7acc77..5861843 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -45,34 +45,34 @@ my_malloc(size_t size) } static void * -my_alloc(size_t min, size_t max, size_t *actual) +my_alloc(size_t size, size_t *actual) { - size_t target = min; + size_t target = size; void *p; - if(NEVER(target == 0)) - target = 1; - else{ - target--; - target |= target >> 1; - target |= target >> 2; - target |= target >> 4; - target |= target >> 8; - target |= target >> 16; - target |= target >> 32; - target++; + if(actual){ + if(NEVER(target == 0)) + target = 1; + else{ + target--; + target |= target >> 1; + target |= target >> 2; + target |= target >> 4; + target |= target >> 8; + target |= target >> 16; + target |= target >> 32; + target++; + } } - if(max && (target > max)) - target = max; - p = my_malloc(target); - if((p == NULL) && (min < target)){ - target = min; + if((p == NULL) && (size < target)){ + target = size; p = my_malloc(target); } - *actual = target; + if(actual) + *actual = target; return p; } diff --git a/src/include/aplwc.h b/src/include/aplwc.h index f07cd10..459a036 100644 --- a/src/include/aplwc.h +++ b/src/include/aplwc.h @@ -45,7 +45,7 @@ typedef struct { struct aplwc_ref ref; } AplwcLine; typedef struct { struct aplwc_ref ref; } AplwcValue; struct aplwc_fns { - void *(*alloc)(size_t, size_t, size_t *); + void *(*alloc)(size_t, size_t *); void (*dealloc)(void *); int (*hook_alloc)(void); }; diff --git a/src/lib/main.c b/src/lib/main.c index 1bafa27..161fdde 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -25,14 +25,13 @@ aplwc_new(struct aplwc_fns fns, enum aplwc_rc *rcp) { enum aplwc_rc rc; struct aplwc *aplwc; - size_t size; aplwc = NULL; if(fns.alloc == NULL){ rc = APLWC_OUT_OF_MEMORY; goto end; } - aplwc = fns.alloc(sizeof(*aplwc), sizeof(*aplwc), &size); + aplwc = fns.alloc(sizeof(*aplwc), NULL); if(aplwc == NULL){ rc = APLWC_OUT_OF_MEMORY; goto end; diff --git a/src/lib/memory.c b/src/lib/memory.c index 583b2ab..8dbb5f2 100644 --- a/src/lib/memory.c +++ b/src/lib/memory.c @@ -154,7 +154,7 @@ grow(struct aplwc *aplwc, size_t extra) if(aplwc->fns.alloc == NULL) goto error; - unaligned_data = aplwc->fns.alloc(aplwc->size + extra + HEADER_SIZE + 2*ALIGNMENT, 0, &unaligned_newsize); + unaligned_data = aplwc->fns.alloc(aplwc->size + extra + HEADER_SIZE + 2*ALIGNMENT, &unaligned_newsize); if(unaligned_data == NULL) goto error; -- cgit v1.2.3