mirror of
https://github.com/python/cpython.git
synced 2025-08-23 02:04:56 +00:00
gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Objects/) (#102218)
This commit is contained in:
parent
b097925858
commit
11a2c6ce51
8 changed files with 51 additions and 106 deletions
|
@ -959,9 +959,8 @@ PyObject_ClearWeakRefs(PyObject *object)
|
|||
if (*list != NULL) {
|
||||
PyWeakReference *current = *list;
|
||||
Py_ssize_t count = _PyWeakref_GetWeakrefCount(current);
|
||||
PyObject *err_type, *err_value, *err_tb;
|
||||
PyObject *exc = PyErr_GetRaisedException();
|
||||
|
||||
PyErr_Fetch(&err_type, &err_value, &err_tb);
|
||||
if (count == 1) {
|
||||
PyObject *callback = current->wr_callback;
|
||||
|
||||
|
@ -980,7 +979,7 @@ PyObject_ClearWeakRefs(PyObject *object)
|
|||
|
||||
tuple = PyTuple_New(count * 2);
|
||||
if (tuple == NULL) {
|
||||
_PyErr_ChainExceptions(err_type, err_value, err_tb);
|
||||
_PyErr_ChainExceptions1(exc);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1010,7 +1009,7 @@ PyObject_ClearWeakRefs(PyObject *object)
|
|||
Py_DECREF(tuple);
|
||||
}
|
||||
assert(!PyErr_Occurred());
|
||||
PyErr_Restore(err_type, err_value, err_tb);
|
||||
PyErr_SetRaisedException(exc);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue