]> Sergey Matveev's repositories - nnn.git/commitdiff
Both src and dst should be alignment checked separately
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 2 Mar 2018 19:38:15 +0000 (01:08 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Fri, 2 Mar 2018 19:38:15 +0000 (01:08 +0530)
The following pattern passes the current check:

src  - 1010
dst  - 0101
mask - 1111

nnn.c

diff --git a/nnn.c b/nnn.c
index 882a470e398812ba17cff9da7217b464c61fd921..291c11967ea97f3da28d5d340a54ef7f38afec4a 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -488,7 +488,7 @@ xstrlcpy(char *dest, const char *src, size_t n)
         * To enable -O3 ensure src and dest are 16-byte aligned
         * More info: http://www.felixcloutier.com/x86/MOVDQA.html
         */
-       if ((n >= lsize) && !((ulong)src & (ulong)dest & _ALIGNMENT_MASK)) {
+       if ((n >= lsize) && (((ulong)src & _ALIGNMENT_MASK) == 0 && ((ulong)dest & _ALIGNMENT_MASK) == 0)) {
                s = (ulong *)src;
                d = (ulong *)dest;
                blocks = n >> _WSHIFT;