diff options
author | Julian Taylor <jtaylor.debian@googlemail.com> | 2014-06-04 19:58:03 +0200 |
---|---|---|
committer | Julian Taylor <jtaylor.debian@googlemail.com> | 2014-06-04 19:58:03 +0200 |
commit | 9749fa92683ceeeac918b369da2824f756e931e8 (patch) | |
tree | 4d25fc3627c8c8fe50b84d79b245db992130af5c | |
parent | d856a7f8a1fdca371fe090d2eaf731d69f26e1dd (diff) | |
download | numpy-9749fa92683ceeeac918b369da2824f756e931e8.tar.gz |
BUG: check alignment of strides for byteswap
closes gh-4774
-rw-r--r-- | numpy/core/src/multiarray/ctors.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/numpy/core/src/multiarray/ctors.c b/numpy/core/src/multiarray/ctors.c index a6837169b..d93995c8a 100644 --- a/numpy/core/src/multiarray/ctors.c +++ b/numpy/core/src/multiarray/ctors.c @@ -318,7 +318,7 @@ _strided_byte_swap(void *p, npy_intp stride, npy_intp n, int size) case 1: /* no byteswap necessary */ break; case 4: - if (npy_is_aligned(p, sizeof(npy_uint32))) { + if (npy_is_aligned((void*)((npy_intp)p | stride), sizeof(npy_uint32))) { for (a = (char*)p; n > 0; n--, a += stride) { npy_uint32 * a_ = (npy_uint32 *)a; *a_ = npy_bswap4(*a_); @@ -331,7 +331,7 @@ _strided_byte_swap(void *p, npy_intp stride, npy_intp n, int size) } break; case 8: - if (npy_is_aligned(p, sizeof(npy_uint64))) { + if (npy_is_aligned((void*)((npy_intp)p | stride), sizeof(npy_uint64))) { for (a = (char*)p; n > 0; n--, a += stride) { npy_uint64 * a_ = (npy_uint64 *)a; *a_ = npy_bswap8(*a_); @@ -344,7 +344,7 @@ _strided_byte_swap(void *p, npy_intp stride, npy_intp n, int size) } break; case 2: - if (npy_is_aligned(p, sizeof(npy_uint16))) { + if (npy_is_aligned((void*)((npy_intp)p | stride), sizeof(npy_uint16))) { for (a = (char*)p; n > 0; n--, a += stride) { npy_uint16 * a_ = (npy_uint16 *)a; *a_ = npy_bswap2(*a_); |