summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Taylor <jtaylor.debian@googlemail.com>2014-06-04 19:58:03 +0200
committerJulian Taylor <jtaylor.debian@googlemail.com>2014-06-04 19:58:03 +0200
commit9749fa92683ceeeac918b369da2824f756e931e8 (patch)
tree4d25fc3627c8c8fe50b84d79b245db992130af5c
parentd856a7f8a1fdca371fe090d2eaf731d69f26e1dd (diff)
downloadnumpy-9749fa92683ceeeac918b369da2824f756e931e8.tar.gz
BUG: check alignment of strides for byteswap
closes gh-4774
-rw-r--r--numpy/core/src/multiarray/ctors.c6
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_);