mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-132250: Clear error in lsprof callback when method descriptor raises an excep… (#132251)
This commit is contained in:
parent
efd8aca62c
commit
ab64130b57
3 changed files with 10 additions and 0 deletions
|
@ -139,6 +139,14 @@ class CProfileTest(ProfileTest):
|
|||
self.assertEqual(cc, 1)
|
||||
self.assertEqual(nc, 1)
|
||||
|
||||
def test_bad_descriptor(self):
|
||||
# gh-132250
|
||||
# cProfile should not crash when the profiler callback fails to locate
|
||||
# the actual function of a method.
|
||||
with self.profilerclass() as prof:
|
||||
with self.assertRaises(TypeError):
|
||||
bytes.find(str())
|
||||
|
||||
|
||||
class TestCommandLine(unittest.TestCase):
|
||||
def test_sort(self):
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fixed the :exc:`SystemError` in :mod:`cProfile` when locating the actual C function of a method raises an exception.
|
|
@ -671,6 +671,7 @@ PyObject* get_cfunc_from_callable(PyObject* callable, PyObject* self_arg, PyObje
|
|||
PyObject *meth = Py_TYPE(callable)->tp_descr_get(
|
||||
callable, self_arg, (PyObject*)Py_TYPE(self_arg));
|
||||
if (meth == NULL) {
|
||||
PyErr_Clear();
|
||||
return NULL;
|
||||
}
|
||||
if (PyCFunction_Check(meth)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue