Skip to content

Commit 626f666

Browse files
committed
address review: use WORDS_BIGENDIAN macro
1 parent f4c1cb7 commit 626f666

File tree

1 file changed

+34
-10
lines changed

1 file changed

+34
-10
lines changed

Modules/_ctypes/cfield.c

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -801,21 +801,33 @@ D_set_sw(void *ptr, PyObject *value, Py_ssize_t size)
801801
if (c.real == -1 && PyErr_Occurred()) {
802802
return NULL;
803803
}
804-
if (PyFloat_Pack8(c.real, ptr, PY_BIG_ENDIAN)
805-
|| PyFloat_Pack8(c.imag, ptr + sizeof(double), PY_BIG_ENDIAN))
804+
#ifdef WORDS_BIGENDIAN
805+
if (PyFloat_Pack8(c.real, ptr, 1)
806+
|| PyFloat_Pack8(c.imag, ptr + sizeof(double), 1))
807+
{
808+
return NULL;
809+
}
810+
#else
811+
if (PyFloat_Pack8(c.real, ptr, 0)
812+
|| PyFloat_Pack8(c.imag, ptr + sizeof(double), 0))
806813
{
807814
return NULL;
808815
}
816+
#endif
809817
_RET(value);
810818
}
811819

812820
static PyObject *
813821
D_get_sw(void *ptr, Py_ssize_t size)
814822
{
815823
assert(NUM_BITS(size) || (size == 2*sizeof(double)));
816-
return PyComplex_FromDoubles(PyFloat_Unpack8(ptr, PY_BIG_ENDIAN),
817-
PyFloat_Unpack8(ptr + sizeof(double),
818-
PY_BIG_ENDIAN));
824+
#ifdef WORDS_BIGENDIAN
825+
return PyComplex_FromDoubles(PyFloat_Unpack8(ptr, 1),
826+
PyFloat_Unpack8(ptr + sizeof(double), 1));
827+
#else
828+
return PyComplex_FromDoubles(PyFloat_Unpack8(ptr, 0),
829+
PyFloat_Unpack8(ptr + sizeof(double), 0));
830+
#endif
819831
}
820832

821833
/* F: float complex */
@@ -852,21 +864,33 @@ F_set_sw(void *ptr, PyObject *value, Py_ssize_t size)
852864
if (c.real == -1 && PyErr_Occurred()) {
853865
return NULL;
854866
}
855-
if (PyFloat_Pack4(c.real, ptr, PY_BIG_ENDIAN)
856-
|| PyFloat_Pack4(c.imag, ptr + sizeof(float), PY_BIG_ENDIAN))
867+
#ifdef WORDS_BIGENDIAN
868+
if (PyFloat_Pack4(c.real, ptr, 1)
869+
|| PyFloat_Pack4(c.imag, ptr + sizeof(float), 1))
870+
{
871+
return NULL;
872+
}
873+
#else
874+
if (PyFloat_Pack4(c.real, ptr, 0)
875+
|| PyFloat_Pack4(c.imag, ptr + sizeof(float), 0))
857876
{
858877
return NULL;
859878
}
879+
#endif
860880
_RET(value);
861881
}
862882

863883
static PyObject *
864884
F_get_sw(void *ptr, Py_ssize_t size)
865885
{
866886
assert(NUM_BITS(size) || (size == 2*sizeof(float)));
867-
return PyComplex_FromDoubles(PyFloat_Unpack4(ptr, PY_BIG_ENDIAN),
868-
PyFloat_Unpack4(ptr + sizeof(float),
869-
PY_BIG_ENDIAN));
887+
#ifdef WORDS_BIGENDIAN
888+
return PyComplex_FromDoubles(PyFloat_Unpack4(ptr, 1),
889+
PyFloat_Unpack4(ptr + sizeof(float), 1));
890+
#else
891+
return PyComplex_FromDoubles(PyFloat_Unpack4(ptr, 0),
892+
PyFloat_Unpack4(ptr + sizeof(float), 0));
893+
#endif
870894
}
871895

872896
/* G: long double complex */

0 commit comments

Comments
 (0)