]> git.ozlabs.org Git - ccan/blobdiff - ccan/mem/mem.c
mem: optimize.
[ccan] / ccan / mem / mem.c
index 2dfc72a506209511c0d61901024a470a28472d84..af41f9e011edbc6738667c3fc89d9d043b1dbcf6 100644 (file)
@@ -92,12 +92,13 @@ void memswap(void *a, void *b, size_t n)
 bool memeqzero(const void *data, size_t length)
 {
        const unsigned char *p = data;
+       static unsigned long zeroes[16];
 
-       while (length) {
-               if (*p)
+       while (length > sizeof(zeroes)) {
+               if (memcmp(zeroes, p, sizeof(zeroes)))
                        return false;
-               p++;
-               length--;
+               p += sizeof(zeroes);
+               length -= sizeof(zeroes);
        }
-       return true;
+       return memcmp(zeroes, p, length) == 0;
 }