| Index: fusl/src/string/stpcpy.c
|
| diff --git a/fusl/src/string/stpcpy.c b/fusl/src/string/stpcpy.c
|
| index 06623c4491c4f6ebb26d7a7c664c06a4a3f54f9f..31b1323d7f7010eabcb781a501dfdd0b026586c7 100644
|
| --- a/fusl/src/string/stpcpy.c
|
| +++ b/fusl/src/string/stpcpy.c
|
| @@ -4,25 +4,29 @@
|
| #include "libc.h"
|
|
|
| #define ALIGN (sizeof(size_t))
|
| -#define ONES ((size_t)-1/UCHAR_MAX)
|
| -#define HIGHS (ONES * (UCHAR_MAX/2+1))
|
| -#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
|
| +#define ONES ((size_t)-1 / UCHAR_MAX)
|
| +#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
|
| +#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
|
|
|
| -char *__stpcpy(char *restrict d, const char *restrict s)
|
| -{
|
| - size_t *wd;
|
| - const size_t *ws;
|
| +char* __stpcpy(char* restrict d, const char* restrict s) {
|
| + size_t* wd;
|
| + const size_t* ws;
|
|
|
| - if ((uintptr_t)s % ALIGN == (uintptr_t)d % ALIGN) {
|
| - for (; (uintptr_t)s % ALIGN; s++, d++)
|
| - if (!(*d=*s)) return d;
|
| - wd=(void *)d; ws=(const void *)s;
|
| - for (; !HASZERO(*ws); *wd++ = *ws++);
|
| - d=(void *)wd; s=(const void *)ws;
|
| - }
|
| - for (; (*d=*s); s++, d++);
|
| + if ((uintptr_t)s % ALIGN == (uintptr_t)d % ALIGN) {
|
| + for (; (uintptr_t)s % ALIGN; s++, d++)
|
| + if (!(*d = *s))
|
| + return d;
|
| + wd = (void*)d;
|
| + ws = (const void*)s;
|
| + for (; !HASZERO(*ws); *wd++ = *ws++)
|
| + ;
|
| + d = (void*)wd;
|
| + s = (const void*)ws;
|
| + }
|
| + for (; (*d = *s); s++, d++)
|
| + ;
|
|
|
| - return d;
|
| + return d;
|
| }
|
|
|
| weak_alias(__stpcpy, stpcpy);
|
|
|