Skip to content

Commit ae42353

Browse files
committed
add more restrictions to aalloc
1 parent 1e87aa7 commit ae42353

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ static void random_test(tlsf* t, size_t spacelen, const size_t cap) {
5555
align = 0;
5656
else
5757
len = align * (((size_t)rand() % (cap / align)) + 1);
58-
p[i] = tlsf_aalloc(t, align, len);
58+
p[i] = !align || !len ? tlsf_malloc(t, len) : tlsf_aalloc(t, align, len);
5959
if (align)
6060
assert(!((size_t)p[i] % align));
6161
}

tlsf.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,10 +423,9 @@ TLSF_API void* tlsf_malloc(tlsf* t, size_t size) {
423423
TLSF_API void* tlsf_aalloc(tlsf* t, size_t align, size_t size) {
424424
size_t adjust = adjust_size(size, ALIGN_SIZE);
425425

426-
if (UNLIKELY(align &&
427-
((align & (align - 1)) || // align is not a power of two
428-
(size & (align - 1)) || // size is not a multiple of align
429-
adjust > TLSF_MAX_SIZE - align - sizeof (tlsf_block)))) // size is too large
426+
if (UNLIKELY(!size ||
427+
((align | size) & (align - 1)) || // align!=2**x, size!=n*align
428+
adjust > TLSF_MAX_SIZE - align - sizeof (tlsf_block))) // size is too large
430429
return 0;
431430

432431
if (align <= ALIGN_SIZE)

0 commit comments

Comments
 (0)