ctypes: Disable checks for union types being passed by value
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1794572 Fixed upstream: https://bugs.python.org/issue16575
This commit is contained in:
parent
1e4e35f9c2
commit
acf2f58231
79
00339-bpo-16575.patch
Normal file
79
00339-bpo-16575.patch
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
From 812479ed6c2c7854f5fafb2366d005845bfff67a Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Miss Islington (bot)"
|
||||||
|
<31488909+miss-islington@users.noreply.github.com>
|
||||||
|
Date: Sun, 12 Jan 2020 03:41:07 -0800
|
||||||
|
Subject: [PATCH] 00339: bpo-16575: Disabled checks for union types being
|
||||||
|
passed by value
|
||||||
|
|
||||||
|
Although the underlying libffi issue remains open, adding these
|
||||||
|
checks have caused problems in third-party projects which are in
|
||||||
|
widespread use. See the issue for examples.
|
||||||
|
|
||||||
|
The corresponding tests have also been skipped.
|
||||||
|
|
||||||
|
(cherry picked from commit c12440c371025bea9c3bfb94945f006c486c2c01)
|
||||||
|
---
|
||||||
|
Lib/ctypes/test/test_structures.py | 3 ++-
|
||||||
|
Modules/_ctypes/_ctypes.c | 18 ++++++++++++++++++
|
||||||
|
2 files changed, 20 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py
|
||||||
|
index 19c4430bea..cdbaa7fbd6 100644
|
||||||
|
--- a/Lib/ctypes/test/test_structures.py
|
||||||
|
+++ b/Lib/ctypes/test/test_structures.py
|
||||||
|
@@ -571,6 +571,7 @@ class StructureTestCase(unittest.TestCase):
|
||||||
|
self.assertEqual(f2, [0x4567, 0x0123, 0xcdef, 0x89ab,
|
||||||
|
0x3210, 0x7654, 0xba98, 0xfedc])
|
||||||
|
|
||||||
|
+ @unittest.skipIf(True, 'Test disabled for now - see bpo-16575/bpo-16576')
|
||||||
|
def test_union_by_value(self):
|
||||||
|
# See bpo-16575
|
||||||
|
|
||||||
|
@@ -651,7 +652,7 @@ class StructureTestCase(unittest.TestCase):
|
||||||
|
self.assertEqual(test5.nested.an_int, 0)
|
||||||
|
self.assertEqual(test5.another_int, 0)
|
||||||
|
|
||||||
|
- #@unittest.skipIf('s390' in MACHINE, 'Test causes segfault on S390')
|
||||||
|
+ @unittest.skipIf(True, 'Test disabled for now - see bpo-16575/bpo-16576')
|
||||||
|
def test_bitfield_by_value(self):
|
||||||
|
# See bpo-16576
|
||||||
|
|
||||||
|
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
|
||||||
|
index 347a3656b6..b51fcde364 100644
|
||||||
|
--- a/Modules/_ctypes/_ctypes.c
|
||||||
|
+++ b/Modules/_ctypes/_ctypes.c
|
||||||
|
@@ -2401,6 +2401,23 @@ converters_from_argtypes(PyObject *ob)
|
||||||
|
for (i = 0; i < nArgs; ++i) {
|
||||||
|
PyObject *cnv;
|
||||||
|
PyObject *tp = PyTuple_GET_ITEM(ob, i);
|
||||||
|
+/*
|
||||||
|
+ * The following checks, relating to bpo-16575 and bpo-16576, have been
|
||||||
|
+ * disabled. The reason is that, although there is a definite problem with
|
||||||
|
+ * how libffi handles unions (https://github.com/libffi/libffi/issues/33),
|
||||||
|
+ * there are numerous libraries which pass structures containing unions
|
||||||
|
+ * by values - especially on Windows but examples also exist on Linux
|
||||||
|
+ * (https://bugs.python.org/msg359834).
|
||||||
|
+ *
|
||||||
|
+ * It may not be possible to get proper support for unions and bitfields
|
||||||
|
+ * until support is forthcoming in libffi, but for now, adding the checks
|
||||||
|
+ * has caused problems in otherwise-working software, which suggests it
|
||||||
|
+ * is better to disable the checks.
|
||||||
|
+ *
|
||||||
|
+ * Although specific examples reported relate specifically to unions and
|
||||||
|
+ * not bitfields, the bitfields check is also being disabled as a
|
||||||
|
+ * precaution.
|
||||||
|
+
|
||||||
|
StgDictObject *stgdict = PyType_stgdict(tp);
|
||||||
|
|
||||||
|
if (stgdict != NULL) {
|
||||||
|
@@ -2428,6 +2445,7 @@ converters_from_argtypes(PyObject *ob)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ */
|
||||||
|
|
||||||
|
if (_PyObject_LookupAttrId(tp, &PyId_from_param, &cnv) <= 0) {
|
||||||
|
Py_DECREF(converters);
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
13
python3.spec
13
python3.spec
@ -278,6 +278,15 @@ Patch274: 00274-fix-arch-names.patch
|
|||||||
# Ideally, we should talk to upstream and explain why we don't want this
|
# Ideally, we should talk to upstream and explain why we don't want this
|
||||||
Patch328: 00328-pyc-timestamp-invalidation-mode.patch
|
Patch328: 00328-pyc-timestamp-invalidation-mode.patch
|
||||||
|
|
||||||
|
# 00339 #
|
||||||
|
# Disabled checks for union types being passed by value
|
||||||
|
# Although the underlying libffi issue remains open, adding these
|
||||||
|
# checks have caused problems in third-party projects which are in
|
||||||
|
# widespread use. See the issue for examples.
|
||||||
|
# Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1794572
|
||||||
|
# Fixed upstream: https://bugs.python.org/issue16575
|
||||||
|
Patch339: 00339-bpo-16575.patch
|
||||||
|
|
||||||
# (New patches go here ^^^)
|
# (New patches go here ^^^)
|
||||||
#
|
#
|
||||||
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
||||||
@ -625,6 +634,7 @@ rm Lib/ensurepip/_bundled/*.whl
|
|||||||
%patch251 -p1
|
%patch251 -p1
|
||||||
%patch274 -p1
|
%patch274 -p1
|
||||||
%patch328 -p1
|
%patch328 -p1
|
||||||
|
%patch339 -p1
|
||||||
|
|
||||||
|
|
||||||
# Remove files that should be generated by the build
|
# Remove files that should be generated by the build
|
||||||
@ -1569,8 +1579,9 @@ CheckPython optimized
|
|||||||
# ======================================================
|
# ======================================================
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-2
|
* Thu Jan 30 2020 Miro Hrončok <mhroncok@redhat.com> - 3.8.1-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
- ctypes: Disable checks for union types being passed by value (#1794572)
|
||||||
|
|
||||||
* Thu Dec 19 2019 Miro Hrončok <mhroncok@redhat.com> - 3.8.1-1
|
* Thu Dec 19 2019 Miro Hrončok <mhroncok@redhat.com> - 3.8.1-1
|
||||||
- Update to Python 3.8.1
|
- Update to Python 3.8.1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user