X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Ffunctional%2Fstring_memset.c;h=e6887426bd86f8067b25c99a77c81527995f99da;hb=HEAD;hp=bfa022f4e07c52e09bc5a157a34554226a438210;hpb=0b6bb43211b258c0d24931b5425d4c58b94ea336;p=libc-test diff --git a/src/functional/string_memset.c b/src/functional/string_memset.c index bfa022f..e688742 100644 --- a/src/functional/string_memset.c +++ b/src/functional/string_memset.c @@ -3,38 +3,38 @@ #include #include "test.h" -#define N 400 +#define N 500 static char buf[N]; static char buf2[N]; static void *(*volatile pmemset)(void *, int, size_t); -static void *aligned(void *p) +static char *aligned(void *p) { - return (void*)(((uintptr_t)p + 63) & -64U); + return (char*)(((uintptr_t)p + 63) & -64); } static void test_align(int align, int len) { - char *s = aligned(buf+64); - char *want = aligned(buf2+64); + char *s = aligned(buf+64) + align; + char *want = aligned(buf2+64) + align; char *p; int i; - if (s - buf + align + len > N) + if (len + 64 > buf + N - s || len + 64 > buf2 + N - want) abort(); for (i = 0; i < N; i++) buf[i] = buf2[i] = ' '; for (i = 0; i < len; i++) - want[align+i] = '#'; - p = pmemset(s+align, '#', len); - if (p != s+align) - t_error("memset(%p,...) returned %p\n", s+align, p); - for (i = 0; i < N; i++) - if (buf[i] != buf2[i]) { - t_error("memset(align %d, '#', %d) failed\n", align, len); - t_printf("got : %.*s\n", align+len+1, s); - t_printf("want: %.*s\n", align+len+1, want); + want[i] = '#'; + p = pmemset(s, '#', len); + if (p != s) + t_error("memset(%p,...) returned %p\n", s, p); + for (i = -64; i < len+64; i++) + if (s[i] != want[i]) { + t_error("memset(align %d, '#', %d) failed at pos %d\n", align, len, i); + t_printf("got : '%.*s'\n", len+128, s-64); + t_printf("want: '%.*s'\n", len+128, want-64); break; } } @@ -57,8 +57,8 @@ int main(void) pmemset = memset; - for (i = 0; i < 16; i++) - for (j = 0; j < 200; j++) + for (i = 0; i < 64; i++) + for (j = 0; j < N-256; j++) test_align(i,j); test_value('c');