diff options
| author | peter <peter@pmikkelsen.com> | 2026-09-03 19:44:19 +0000 |
|---|---|---|
| committer | peter <peter@pmikkelsen.com> | 2026-09-03 19:44:19 +0000 |
| commit | b46ed2f964b7d700ab79d88c41b759b594156e92 (patch) | |
| tree | d1d3b3a77800ac636b894633e4829523efd0c250 /src | |
| parent | fa6a3ee5b24d5e227798330cff5f9ff060d6d863 (diff) | |
In aplwc-repl, allocate a bit more (next power of 2) than requested.
FossilOrigin-Name: 50c75ed6184d943f18022d48371cf4137b3e973136906fb39d21b52449dd743d
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/main.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/bin/main.c b/src/bin/main.c index 516fb51..02b3d0a 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -26,10 +26,33 @@ static void * my_alloc(size_t min, size_t max, size_t *actual) { - UNUSED_PARAMETER(max); + size_t target = min; + void *p; + + if(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 = malloc(target); + if((p == NULL) && (min < target)){ + target = min; + p = malloc(target); + } - *actual = min; - return malloc(min); + *actual = target; + return p; } static void |