diff options
Diffstat (limited to 'src/bin/main.c')
| -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 |