From 7902c357095a7ca20fb1a7773f9ddfb46170d219 Mon Sep 17 00:00:00 2001 From: Sam Gross Date: Tue, 3 Dec 2024 19:09:29 +0000 Subject: [PATCH] gh-127572: Fix `test_structmembers` initialization. The 'C' format code expects an `int` as a destination (not a `char`). This led to test failures on big-endian platforms like s390x. Use the 'c' format code, which expects a `char` as the destination (but requires a Python byte objects intead of a str). --- Lib/test/test_capi/test_structmembers.py | 2 +- Modules/_testcapi/structmember.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_capi/test_structmembers.py b/Lib/test/test_capi/test_structmembers.py index ae9168fc39243fe..f14ad9a9a5f512e 100644 --- a/Lib/test/test_capi/test_structmembers.py +++ b/Lib/test/test_capi/test_structmembers.py @@ -39,7 +39,7 @@ def _make_test_object(cls): "hi", # T_STRING_INPLACE 12, # T_LONGLONG 13, # T_ULONGLONG - "c", # T_CHAR + b"c", # T_CHAR ) diff --git a/Modules/_testcapi/structmember.c b/Modules/_testcapi/structmember.c index c1861db18c4af27..ef30a5a9944e3ca 100644 --- a/Modules/_testcapi/structmember.c +++ b/Modules/_testcapi/structmember.c @@ -60,7 +60,7 @@ test_structmembers_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) "T_FLOAT", "T_DOUBLE", "T_STRING_INPLACE", "T_LONGLONG", "T_ULONGLONG", "T_CHAR", NULL}; - static const char fmt[] = "|bbBhHiIlknfds#LKC"; + static const char fmt[] = "|bbBhHiIlknfds#LKc"; test_structmembers *ob; const char *s = NULL; Py_ssize_t string_len = 0;