diff --git a/src/_imaging.c b/src/_imaging.c index 5c6380feed3..6c3617a775d 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;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);