[Python-checkins] bpo-39884: Add method name in "bad call flags" error (GH-18944) (GH-18956)

Victor Stinner webhook-mailer at python.org
Thu Mar 12 08:37:26 EDT 2020


https://github.com/python/cpython/commit/03ac090c5f8d5b281e56c5f5431c1754fd4efe5c
commit: 03ac090c5f8d5b281e56c5f5431c1754fd4efe5c
branch: 3.8
author: Victor Stinner <vstinner at python.org>
committer: GitHub <noreply at github.com>
date: 2020-03-12T13:37:02+01:00
summary:

bpo-39884: Add method name in "bad call flags" error (GH-18944) (GH-18956)

PyDescr_NewMethod() and PyCFunction_NewEx() now include the method
name in the SystemError "bad call flags" error message to ease debug.

(cherry picked from commit c7d2d69d95b263ee5f83511bc6fbe53acdc24ea3)

files:
A Misc/NEWS.d/next/C API/2020-03-12-00-27-26.bpo-39884.CGOJBO.rst
M Objects/descrobject.c
M Objects/methodobject.c

diff --git a/Misc/NEWS.d/next/C API/2020-03-12-00-27-26.bpo-39884.CGOJBO.rst b/Misc/NEWS.d/next/C API/2020-03-12-00-27-26.bpo-39884.CGOJBO.rst
new file mode 100644
index 0000000000000..c65dfdc21244a
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2020-03-12-00-27-26.bpo-39884.CGOJBO.rst	
@@ -0,0 +1,2 @@
+:c:func:`PyDescr_NewMethod` and :c:func:`PyCFunction_NewEx` now include the
+method name in the SystemError "bad call flags" error message to ease debug.
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 119be35db08d8..729f42c50c814 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -892,7 +892,8 @@ PyDescr_NewMethod(PyTypeObject *type, PyMethodDef *method)
             vectorcall = method_vectorcall_O;
             break;
         default:
-            PyErr_SetString(PyExc_SystemError, "bad call flags");
+            PyErr_Format(PyExc_SystemError,
+                         "%s() method: bad call flags", method->ml_name);
             return NULL;
     }
 
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
index 3494f11d80fe7..3604a55e5a1dc 100644
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -62,7 +62,8 @@ PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)
             vectorcall = cfunction_vectorcall_O;
             break;
         default:
-            PyErr_SetString(PyExc_SystemError, "bad call flags");
+            PyErr_Format(PyExc_SystemError,
+                         "%s() method: bad call flags", ml->ml_name);
             return NULL;
     }
 



More information about the Python-checkins mailing list