Dear all,

attached is a patch that makes the alignment check in strlen more consistent with the one in memcpy, and hopefully faster.

In src/string/memcpy.c, I find the following:

#define ALIGN (sizeof(size_t)-1)
if (((uintptr_t)d & ALIGN) != ((uintptr_t)s & ALIGN))
  goto misaligned;

In src/string/strlen.c, a different check was used instead:

#define ALIGN (sizeof(size_t))
for (; (uintptr_t)s % ALIGN; s++) if (!*s) return s-a;

I do not think there is any particular reason for this difference.

Best,
Jonas