aboutsummaryrefslogtreecommitdiffstats
path: root/aligned_memdup.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2024-08-18 09:43:16 +0200
committerMattias Andrée <maandree@kth.se>2024-08-18 09:43:16 +0200
commit715b59e5002b971a987c3c8a2e1b3e61d80388f7 (patch)
treeaa64aa9fed94388056432f0f4a2180d5c03523fd /aligned_memdup.c
parentAdd @since for definitions added in version 1.0 and 1.1 (diff)
parentFix tests and libsimple_arraycpy and libsimple_arraymove (diff)
downloadlibsimple-715b59e5002b971a987c3c8a2e1b3e61d80388f7.tar.gz
libsimple-715b59e5002b971a987c3c8a2e1b3e61d80388f7.tar.bz2
libsimple-715b59e5002b971a987c3c8a2e1b3e61d80388f7.tar.xz
Merge tag '1.2' into since
Version 1.2
Diffstat (limited to '')
-rw-r--r--aligned_memdup.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/aligned_memdup.c b/aligned_memdup.c
index d66a846..7b2ca71 100644
--- a/aligned_memdup.c
+++ b/aligned_memdup.c
@@ -6,9 +6,9 @@
void *
libsimple_aligned_memdup(const void *s, size_t alignment, size_t n)
{
+ size_t size = n + (alignment - n % alignment) % alignment;
void *ret;
- n = n ? n : 1;
- ret = aligned_alloc(alignment, n + (alignment - n % alignment) % alignment);
+ ret = aligned_alloc(alignment, size ? size : alignment);
if (!ret)
return NULL;
return memcpy(ret, s, n);
@@ -17,6 +17,7 @@ libsimple_aligned_memdup(const void *s, size_t alignment, size_t n)
#else
#include "test.h"
+#undef memset
int
main(void)
@@ -26,7 +27,7 @@ main(void)
void *p = libsimple_aligned_memdup(s, 4, 5);
assert(p);
assert(p != s);
- assert(!((uintptr_t)s % 4));
+ assert(!((uintptr_t)p % 4));
if (have_custom_malloc()) {
assert((info = get_allocinfo(p)));
assert(info->size == 8);