mirror of
https://github.com/python/cpython.git
synced 2025-08-25 19:24:42 +00:00
bpo-45953: Preserve backward compatibility on some PyThreadState field names. (GH-31038)
The gevent project is using the two `PyThreadState` fields I renamed in gh-30590. This PR fixes the names. See #msg412046.
This commit is contained in:
parent
64568acbd8
commit
f78be59c83
2 changed files with 9 additions and 6 deletions
|
@ -187,16 +187,19 @@ struct _ts {
|
||||||
/* The following fields are here to avoid allocation during init.
|
/* The following fields are here to avoid allocation during init.
|
||||||
The data is exposed through PyThreadState pointer fields.
|
The data is exposed through PyThreadState pointer fields.
|
||||||
These fields should not be accessed directly outside of init.
|
These fields should not be accessed directly outside of init.
|
||||||
|
This is indicated by an underscore prefix on the field names.
|
||||||
|
|
||||||
All other PyInterpreterState pointer fields are populated when
|
All other PyInterpreterState pointer fields are populated when
|
||||||
needed and default to NULL.
|
needed and default to NULL.
|
||||||
*/
|
*/
|
||||||
|
// Note some fields do not have a leading underscore for backward
|
||||||
|
// compatibility. See https://bugs.python.org/issue45953#msg412046.
|
||||||
|
|
||||||
/* The thread's exception stack entry. (Always the last entry.) */
|
/* The thread's exception stack entry. (Always the last entry.) */
|
||||||
_PyErr_StackItem _exc_state;
|
_PyErr_StackItem exc_state;
|
||||||
|
|
||||||
/* The bottom-most frame on the stack. */
|
/* The bottom-most frame on the stack. */
|
||||||
CFrame _root_cframe;
|
CFrame root_cframe;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -776,9 +776,9 @@ init_threadstate(PyThreadState *tstate,
|
||||||
tstate->recursion_limit = interp->ceval.recursion_limit,
|
tstate->recursion_limit = interp->ceval.recursion_limit,
|
||||||
tstate->recursion_remaining = interp->ceval.recursion_limit,
|
tstate->recursion_remaining = interp->ceval.recursion_limit,
|
||||||
|
|
||||||
tstate->exc_info = &tstate->_exc_state;
|
tstate->exc_info = &tstate->exc_state;
|
||||||
|
|
||||||
tstate->cframe = &tstate->_root_cframe;
|
tstate->cframe = &tstate->root_cframe;
|
||||||
tstate->datastack_chunk = NULL;
|
tstate->datastack_chunk = NULL;
|
||||||
tstate->datastack_top = NULL;
|
tstate->datastack_top = NULL;
|
||||||
tstate->datastack_limit = NULL;
|
tstate->datastack_limit = NULL;
|
||||||
|
@ -1016,10 +1016,10 @@ PyThreadState_Clear(PyThreadState *tstate)
|
||||||
Py_CLEAR(tstate->curexc_value);
|
Py_CLEAR(tstate->curexc_value);
|
||||||
Py_CLEAR(tstate->curexc_traceback);
|
Py_CLEAR(tstate->curexc_traceback);
|
||||||
|
|
||||||
Py_CLEAR(tstate->_exc_state.exc_value);
|
Py_CLEAR(tstate->exc_state.exc_value);
|
||||||
|
|
||||||
/* The stack of exception states should contain just this thread. */
|
/* The stack of exception states should contain just this thread. */
|
||||||
if (verbose && tstate->exc_info != &tstate->_exc_state) {
|
if (verbose && tstate->exc_info != &tstate->exc_state) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"PyThreadState_Clear: warning: thread still has a generator\n");
|
"PyThreadState_Clear: warning: thread still has a generator\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue