mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Repair COMError. Since exceptions are new style classes now, setting
the methods and docstring after the type creation does not work, they must be in the dictionary before creating the type.
This commit is contained in:
parent
928713c740
commit
1421b00162
1 changed files with 13 additions and 7 deletions
|
@ -4520,11 +4520,6 @@ create_comerror(void)
|
|||
PyObject *s;
|
||||
int status;
|
||||
|
||||
ComError = PyErr_NewException("_ctypes.COMError",
|
||||
NULL,
|
||||
dict);
|
||||
if (ComError == NULL)
|
||||
return -1;
|
||||
while (methods->ml_name) {
|
||||
/* get a wrapper for the built-in function */
|
||||
PyObject *func = PyCFunction_New(methods, NULL);
|
||||
|
@ -4539,13 +4534,24 @@ create_comerror(void)
|
|||
Py_DECREF(meth);
|
||||
++methods;
|
||||
}
|
||||
Py_INCREF(ComError);
|
||||
|
||||
s = PyString_FromString(comerror_doc);
|
||||
if (s == NULL)
|
||||
return -1;
|
||||
status = PyDict_SetItemString(dict, "__doc__", s);
|
||||
Py_DECREF(s);
|
||||
return status;
|
||||
if (status == -1) {
|
||||
Py_DECREF(dict);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ComError = PyErr_NewException("_ctypes.COMError",
|
||||
NULL,
|
||||
dict);
|
||||
if (ComError == NULL)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue