Index: fusl/src/string/memchr.c |
diff --git a/fusl/src/string/memchr.c b/fusl/src/string/memchr.c |
index 4daff7bbc4634c6162b0158fc3bc893c9b697d53..237f748f424aead2a98f9171d8a85e1e336a1f2c 100644 |
--- a/fusl/src/string/memchr.c |
+++ b/fusl/src/string/memchr.c |
@@ -3,21 +3,23 @@ |
#include <limits.h> |
#define SS (sizeof(size_t)) |
-#define ALIGN (sizeof(size_t)-1) |
-#define ONES ((size_t)-1/UCHAR_MAX) |
-#define HIGHS (ONES * (UCHAR_MAX/2+1)) |
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) |
+#define ALIGN (sizeof(size_t) - 1) |
+#define ONES ((size_t)-1 / UCHAR_MAX) |
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1)) |
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS) |
-void *memchr(const void *src, int c, size_t n) |
-{ |
- const unsigned char *s = src; |
- c = (unsigned char)c; |
- for (; ((uintptr_t)s & ALIGN) && n && *s != c; s++, n--); |
- if (n && *s != c) { |
- const size_t *w; |
- size_t k = ONES * c; |
- for (w = (const void *)s; n>=SS && !HASZERO(*w^k); w++, n-=SS); |
- for (s = (const void *)w; n && *s != c; s++, n--); |
- } |
- return n ? (void *)s : 0; |
+void* memchr(const void* src, int c, size_t n) { |
+ const unsigned char* s = src; |
+ c = (unsigned char)c; |
+ for (; ((uintptr_t)s & ALIGN) && n && *s != c; s++, n--) |
+ ; |
+ if (n && *s != c) { |
+ const size_t* w; |
+ size_t k = ONES * c; |
+ for (w = (const void*)s; n >= SS && !HASZERO(*w ^ k); w++, n -= SS) |
+ ; |
+ for (s = (const void*)w; n && *s != c; s++, n--) |
+ ; |
+ } |
+ return n ? (void*)s : 0; |
} |