diff options
| author | peter <peter@pmikkelsen.com> | 2026-09-04 20:40:22 +0000 |
|---|---|---|
| committer | peter <peter@pmikkelsen.com> | 2026-09-04 20:40:22 +0000 |
| commit | ea03b44757f3d4fc5e17a96cc74ff2d3d8a317ec (patch) | |
| tree | e1bc7da2042ab935041a77504357aa2f39b1b9ed /src | |
| parent | d7c80ae3c76f2dd2e2ce3a39602fa7f04776d9c2 (diff) | |
Simplify the alloc callback function
FossilOrigin-Name: a08c14408099c9287646e3fcac0df8dfa04d23cd08273f6b17abe7bff79e0942
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/main.c | 38 | ||||
| -rw-r--r-- | src/include/aplwc.h | 2 | ||||
| -rw-r--r-- | src/lib/main.c | 3 | ||||
| -rw-r--r-- | src/lib/memory.c | 2 |
4 files changed, 22 insertions, 23 deletions
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; |