Package: python3 Version: 3.8.2-3 Severity: normal Tags: patch upstream Dear Maintainer,
There is a signed/unsigned mismatch in the Py_UNICODE_ISSPACE() macro in Python's unicodeobject.h. The following program demonstrates the problem #include <Python.h> int main(int argc, char *argv[]) { Py_UNICODE x = 0; return Py_UNICODE_ISSPACE(x); } compile with $ gcc -Wsign-compare -Werror $(pkg-config --cflags python3) a.c In file included from /usr/include/python3.8/unicodeobject.h:1037, from /usr/include/python3.8/Python.h:97, from a.c:1: a.c: In function ‘main’: /usr/include/python3.8/cpython/unicodeobject.h:25:11: error: comparison of integer expressions of different signedness: ‘Py_UNICODE’ {aka ‘int’} and ‘unsigned int’ [-Werror=sign-compare] 25 | ((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch)) | ^ a.c:7:9: note: in expansion of macro ‘Py_UNICODE_ISSPACE’ 7 | return Py_UNICODE_ISSPACE(x); | ^~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors The comparison is between the macro's parameter ch and the unsigned integer 128. On Debian amd64, Py_UNICODE is typedef'd to signed int causing a signed/unsigned mismatch warning when the Py_UNICODE_ISSPACE() macro is used with variables that have been defined to be the correct Py_UNICODE type. The warning is mostly harmless, but it prevents Python extension modules from being compiled with warnings enabled and -Werror. The following patch fixes it $ diff /usr/include/python3.8/cpython/unicodeobject.h unicodeobject.h 25c25 < ((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch)) --- > ((ch) < (Py_UNICODE)128 ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch)) I don't know if this problem is unique to the Debian packaging of Python or if it exists upstream, so I'm reporting it here. If I should report this upstream instead please let me know. Thanks, -Kipp -- System Information: Debian Release: bullseye/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.6.0-1-amd64 (SMP w/4 CPU cores) Kernel taint flags: TAINT_FIRMWARE_WORKAROUND Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8), LANGUAGE=en_CA.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages python3 depends on: ii libpython3-stdlib 3.8.2-3 ii python3-minimal 3.8.2-3 ii python3.8 3.8.3-1 python3 recommends no packages. Versions of packages python3 suggests: pn python3-doc <none> ii python3-tk 3.8.2-2 pn python3-venv <none> -- no debconf information