diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | aligned_memdup.c | 3 | ||||
-rw-r--r-- | libsimple/array.h | 4 | ||||
-rw-r--r-- | test.c | 2 |
4 files changed, 7 insertions, 4 deletions
@@ -222,7 +222,9 @@ all: libsimple.a $(TESTS) $(OBJ): $(@:.o=.c) $(HDR) $(TESTS): $(@:=.o) test.o libsimple.a $(TESTS:=.o): $(@:.test.o=.c) $(HDR) test.h + test.o: test.c $(HDR) test.h + $(CC) -c -o $@ test.c $(CFLAGS) -DTEST -O0 -ffreestanding libsimple.a: $(OBJ) $(AR) rc $@ $? diff --git a/aligned_memdup.c b/aligned_memdup.c index ec06c38..7b2ca71 100644 --- a/aligned_memdup.c +++ b/aligned_memdup.c @@ -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); diff --git a/libsimple/array.h b/libsimple/array.h index 3e8eab1..b17966b 100644 --- a/libsimple/array.h +++ b/libsimple/array.h @@ -123,13 +123,13 @@ #endif -#define libsimple_arraycpy(d, s, n) libsimple_memcpy(d, s, (n) * sizeof *(s)) +#define libsimple_arraycpy(d, s, n) memcpy(d, s, (n) * sizeof *(s)) #ifndef arraycpy # define arraycpy(...) libsimple_arraycpy(__VA_ARGS__) #endif -#define libsimple_arraymove(d, s, n) libsimple_memmove(d, s, (n) * sizeof *(s)) +#define libsimple_arraymove(d, s, n) memmove(d, s, (n) * sizeof *(s)) #ifndef arraymove # define arraymove(...) libsimple_arraymove(__VA_ARGS__) #endif @@ -287,7 +287,7 @@ memset(void *s, int c, size_t n) { char *str = s; struct allocinfo *info; - if (just_alloced && s == just_alloced) { + if (s == just_alloced && just_alloced && !c) { info = get_allocinfo(s); info->zeroed = MAX(info->zeroed, n); } |