summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpeter <peter@pmikkelsen.com>2026-09-04 20:40:22 +0000
committerpeter <peter@pmikkelsen.com>2026-09-04 20:40:22 +0000
commitea03b44757f3d4fc5e17a96cc74ff2d3d8a317ec (patch)
treee1bc7da2042ab935041a77504357aa2f39b1b9ed /src
parentd7c80ae3c76f2dd2e2ce3a39602fa7f04776d9c2 (diff)
Simplify the alloc callback function
FossilOrigin-Name: a08c14408099c9287646e3fcac0df8dfa04d23cd08273f6b17abe7bff79e0942
Diffstat (limited to 'src')
-rw-r--r--src/bin/main.c38
-rw-r--r--src/include/aplwc.h2
-rw-r--r--src/lib/main.c3
-rw-r--r--src/lib/memory.c2
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;