Kaydet (Commit) d9994e01 authored tarafından Guido van Rossum's avatar Guido van Rossum

Patch by Ping (SF bug 415879, Exception.__init__() causes segfault):

   Calling an unbound method on a C extension class without providing
   an instance can yield a segfault.  Try "Exception.__init__()" or
   "ValueError.__init__()".

   This is a simple fix. The error-reporting bits in call_method
   mistakenly treat the misleadingly-named variable "func" as a
   function, when in fact it is a method.

   If we let get_func_name take care of the work, all is fine.
üst d03f8fe9
......@@ -2883,12 +2883,11 @@ call_method(PyObject *func, PyObject *arg, PyObject *kw)
return NULL;
}
if (!ok) {
PyObject* fn = ((PyFunctionObject*) func)->func_name;
char* fn = get_func_name(func);
PyErr_Format(PyExc_TypeError,
"unbound method %s%smust be "
"called with instance as first argument",
fn ? PyString_AsString(fn) : "",
fn ? "() " : "");
fn ? fn : "", fn ? "() " : "");
return NULL;
}
Py_INCREF(arg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment