summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-10-25 15:28:11 (GMT)
committerGitHub <noreply@github.com>2018-10-25 15:28:11 (GMT)
commit18618e652c56e61a134e596b315a13c7cb997a89 (patch)
tree007e352f7e49a7b78469a1bff62a8a01d1bb2f8d /Lib
parentd03b7757811ae51277f8ed399a9a0fd78dfd3425 (diff)
downloadcpython-18618e652c56e61a134e596b315a13c7cb997a89.zip
cpython-18618e652c56e61a134e596b315a13c7cb997a89.tar.gz
cpython-18618e652c56e61a134e596b315a13c7cb997a89.tar.bz2
bpo-35059: Add Py_STATIC_INLINE() macro (GH-10093)
* Add Py_STATIC_INLINE() macro to declare a "static inline" function. If the compiler supports it, try to always inline the function even if no optimization level was specified. * Modify pydtrace.h to use Py_STATIC_INLINE() when WITH_DTRACE is not defined. * Add an unit test on Py_DECREF() to make sure that _Py_NegativeRefcount() reports the correct filename.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_capi.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 49297f4..a732f4f 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -315,6 +315,23 @@ class CAPITest(unittest.TestCase):
self.assertRaises(TypeError, _testcapi.get_mapping_values, bad_mapping)
self.assertRaises(TypeError, _testcapi.get_mapping_items, bad_mapping)
+ @unittest.skipUnless(hasattr(_testcapi, 'negative_refcount'),
+ 'need _testcapi.negative_refcount')
+ def test_negative_refcount(self):
+ # bpo-35059: Check that Py_DECREF() reports the correct filename
+ # when calling _Py_NegativeRefcount() to abort Python.
+ code = textwrap.dedent("""
+ import _testcapi
+ from test import support
+
+ with support.SuppressCrashReport():
+ _testcapi.negative_refcount()
+ """)
+ rc, out, err = assert_python_failure('-c', code)
+ self.assertRegex(err,
+ br'_testcapimodule\.c:[0-9]+ object at .* '
+ br'has negative ref count', err)
+
class TestPendingCalls(unittest.TestCase):