From 838a4422a1e296913f9a0f111881e69461400d2c Mon Sep 17 00:00:00 2001 From: Yay295 Date: Mon, 12 Jun 2023 14:53:34 -0500 Subject: [PATCH] handle I;16 native endianness on big-endian machine --- src/_imaging.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/_imaging.c b/src/_imaging.c index 5c6380feed3..4a53e86ab1e 100644 --- a/src/_imaging.c +++ b/src/_imaging.c @@ -1571,7 +1571,22 @@ if (PySequence_Check(op)) { \ PyErr_SetString(PyExc_TypeError, must_be_sequence); return NULL; } - int endian = strncmp(image->mode, "I;16", 4) == 0 ? (strcmp(image->mode, "I;16B") == 0 ? 2 : 1) : 0; + // 0 = none, 1 = little, 2 = big + int endian = 0; + if (strncmp(image->mode, "I;16", 4) == 0) { + if (strcmp(image->mode, "I;16") == 0 || strcmp(image->mode, "I;16L") == 0) { + endian = 1; + } else if (strcmp(image->mode, "I;16B") == 0) { + endian = 2; + } else { + // native endianness +#ifdef WORDS_BIGENDIAN + endian = 2; +#else + endian = 1; +#endif + } + } double value; for (i = x = y = 0; i < n; i++) { set_value_to_item(seq, i);