mirror of https://github.com/python/cpython
gh-116664: In _warnings.c, make filters_version access thread-safe (#117374)
- assert that the lock is held in already_warned() - protect 'filters_version' increment in warnings_filters_mutated_impl()
This commit is contained in:
parent
019143fecb
commit
05e0b67a43
|
@ -398,9 +398,9 @@ already_warned(PyInterpreterState *interp, PyObject *registry, PyObject *key,
|
|||
return -1;
|
||||
|
||||
WarningsState *st = warnings_get_state(interp);
|
||||
if (st == NULL) {
|
||||
return -1;
|
||||
}
|
||||
assert(st != NULL);
|
||||
_Py_CRITICAL_SECTION_ASSERT_MUTEX_LOCKED(&st->mutex);
|
||||
|
||||
PyObject *version_obj;
|
||||
if (PyDict_GetItemRef(registry, &_Py_ID(version), &version_obj) < 0) {
|
||||
return -1;
|
||||
|
@ -1177,11 +1177,14 @@ warnings_filters_mutated_impl(PyObject *module)
|
|||
if (interp == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
WarningsState *st = warnings_get_state(interp);
|
||||
if (st == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
assert(st != NULL);
|
||||
|
||||
Py_BEGIN_CRITICAL_SECTION_MUT(&st->mutex);
|
||||
st->filters_version++;
|
||||
Py_END_CRITICAL_SECTION();
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue