mirror of https://github.com/python/cpython
bpo-30598: _PySys_EndInit() now duplicates warnoptions (#1998)
Fix a reference in subinterpreters, like test_callbacks_leak() of test_atexit. warnoptions is a list used to pass options from the command line to the sys module constructor. Before this change, the list was shared by multiple interpreter which is not the expected behaviour. Each interpreter should have their own independent mutable world. This change duplicates the list in each interpreter. So each interpreter owns its own list, so each interpreter can clear its own list.
This commit is contained in:
parent
ab1cb80b43
commit
865de27dd7
|
@ -2136,10 +2136,10 @@ _PySys_EndInit(PyObject *sysdict)
|
|||
if (warnoptions == NULL)
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
Py_INCREF(warnoptions);
|
||||
}
|
||||
SET_SYS_FROM_STRING_BORROW_INT_RESULT("warnoptions", warnoptions);
|
||||
|
||||
SET_SYS_FROM_STRING_INT_RESULT("warnoptions",
|
||||
PyList_GetSlice(warnoptions,
|
||||
0, Py_SIZE(warnoptions)));
|
||||
|
||||
SET_SYS_FROM_STRING_BORROW_INT_RESULT("_xoptions", get_xoptions());
|
||||
|
||||
|
|
Loading…
Reference in New Issue