summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaan <daanl@outlook.com>2021-12-17 13:25:44 -0800
committerdaan <daanl@outlook.com>2021-12-17 13:25:44 -0800
commit3d35147aba3463405b09821e66abfc0a1992b4c0 (patch)
tree66310f220050450b9de215444d04759da0f91fda
parentabbff9c0307d0f3ac1334fe1a45a34c402ca1531 (diff)
parentfaf2a7020c4d3234434b165f5c27f89d7777016b (diff)
Merge branch 'dev' into dev-slice
-rw-r--r--src/alloc-aligned.c6
-rw-r--r--src/alloc-posix.c2
-rw-r--r--test/test-api.c8
3 files changed, 11 insertions, 5 deletions
diff --git a/src/alloc-aligned.c b/src/alloc-aligned.c
index f42a2e2..acf42e7 100644
--- a/src/alloc-aligned.c
+++ b/src/alloc-aligned.c
@@ -51,19 +51,19 @@ static void* mi_heap_malloc_zero_aligned_at(mi_heap_t* const heap, const size_t
mi_assert(alignment > 0);
if (mi_unlikely(alignment==0 || !_mi_is_power_of_two(alignment))) { // require power-of-two (see <https://en.cppreference.com/w/c/memory/aligned_alloc>)
#if MI_DEBUG > 0
- _mi_error_message(EOVERFLOW, "aligned allocation requires the alignment to be a power-of-two (size %zu, alignment %zu)", size, alignment);
+ _mi_error_message(EOVERFLOW, "aligned allocation requires the alignment to be a power-of-two (size %zu, alignment %zu)\n", size, alignment);
#endif
return NULL;
}
if (mi_unlikely(alignment > MI_ALIGNED_MAX)) { // we cannot align at a boundary larger than this (or otherwise we cannot find segment headers)
#if MI_DEBUG > 0
- _mi_error_message(EOVERFLOW, "aligned allocation has a maximum alignment of %zu (size %zu, alignment %zu)", MI_ALIGNED_MAX, size, alignment);
+ _mi_error_message(EOVERFLOW, "aligned allocation has a maximum alignment of %zu (size %zu, alignment %zu)\n", MI_ALIGNED_MAX, size, alignment);
#endif
return NULL;
}
if (mi_unlikely(size > PTRDIFF_MAX)) { // we don't allocate more than PTRDIFF_MAX (see <https://sourceware.org/ml/libc-announce/2019/msg00001.html>)
#if MI_DEBUG > 0
- _mi_error_message(EOVERFLOW, "aligned allocation request is too large (size %zu, alignment %zu)", size, alignment);
+ _mi_error_message(EOVERFLOW, "aligned allocation request is too large (size %zu, alignment %zu)\n", size, alignment);
#endif
return NULL;
}
diff --git a/src/alloc-posix.c b/src/alloc-posix.c
index efe6281..0317108 100644
--- a/src/alloc-posix.c
+++ b/src/alloc-posix.c
@@ -85,7 +85,7 @@ mi_decl_restrict void* mi_pvalloc(size_t size) mi_attr_noexcept {
mi_decl_restrict void* mi_aligned_alloc(size_t alignment, size_t size) mi_attr_noexcept {
if (mi_unlikely((size&(alignment-1)) != 0)) { // C11 requires alignment>0 && integral multiple, see <https://en.cppreference.com/w/c/memory/aligned_alloc>
#if MI_DEBUG > 0
- _mi_error_message(EOVERFLOW, "(mi_)aligned_alloc requires the size to be an integral multiple of the alignment (size %zu, alignment %zu)", size, alignment);
+ _mi_error_message(EOVERFLOW, "(mi_)aligned_alloc requires the size to be an integral multiple of the alignment (size %zu, alignment %zu)\n", size, alignment);
#endif
return NULL;
}
diff --git a/test/test-api.c b/test/test-api.c
index 1f810d5..56835d0 100644
--- a/test/test-api.c
+++ b/test/test-api.c
@@ -162,12 +162,18 @@ int main(void) {
void* p;
bool ok = true;
for (int i = 1; i < 8 && ok; i++) {
- size_t align = 1UL << i;
+ size_t align = (size_t)1 << i;
p = mi_malloc_aligned(2*align, align);
ok = (p != NULL && (uintptr_t)(p) % align == 0); mi_free(p);
}
result = ok;
});
+ CHECK_BODY("malloc-aligned7", {
+ void* p = mi_malloc_aligned(1024,MI_ALIGNED_MAX); mi_free(p);
+ });
+ CHECK_BODY("malloc-aligned8", {
+ void* p = mi_malloc_aligned(1024,2*MI_ALIGNED_MAX); mi_free(p);
+ });
CHECK_BODY("malloc-aligned-at1", {
void* p = mi_malloc_aligned_at(48,32,0); result = (p != NULL && ((uintptr_t)(p) + 0) % 32 == 0); mi_free(p);
});