mirror of https://github.com/python/cpython
Merged revisions 75367 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r75367 | antoine.pitrou | 2009-10-11 23:03:26 +0200 (dim., 11 oct. 2009) | 4 lines Issue #7084: Fix a (very unlikely) crash when printing a list from one thread, and mutating it from another one. Patch by Scott Dial. ........
This commit is contained in:
parent
9aece75269
commit
686c9adbd5
|
@ -167,6 +167,7 @@ Arnaud Delobelle
|
|||
Erik Demaine
|
||||
Roger Dev
|
||||
Raghuram Devarakonda
|
||||
Scott Dial
|
||||
Toby Dickenson
|
||||
Mark Dickinson
|
||||
Daniel Diniz
|
||||
|
|
|
@ -16,6 +16,9 @@ Core and Builtins
|
|||
fixes the problem of some exceptions being thrown at shutdown when the
|
||||
interpreter is killed. Patch by Adam Olsen.
|
||||
|
||||
- Issue #7084: Fix a (very unlikely) crash when printing a list from one
|
||||
thread, and mutating it from another one. Patch by Scott Dial.
|
||||
|
||||
Library
|
||||
-------
|
||||
|
||||
|
|
|
@ -319,6 +319,7 @@ list_print(PyListObject *op, FILE *fp, int flags)
|
|||
{
|
||||
int rc;
|
||||
Py_ssize_t i;
|
||||
PyObject *item;
|
||||
|
||||
rc = Py_ReprEnter((PyObject*)op);
|
||||
if (rc != 0) {
|
||||
|
@ -333,15 +334,19 @@ list_print(PyListObject *op, FILE *fp, int flags)
|
|||
fprintf(fp, "[");
|
||||
Py_END_ALLOW_THREADS
|
||||
for (i = 0; i < Py_SIZE(op); i++) {
|
||||
item = op->ob_item[i];
|
||||
Py_INCREF(item);
|
||||
if (i > 0) {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
fprintf(fp, ", ");
|
||||
Py_END_ALLOW_THREADS
|
||||
}
|
||||
if (PyObject_Print(op->ob_item[i], fp, 0) != 0) {
|
||||
if (PyObject_Print(item, fp, 0) != 0) {
|
||||
Py_DECREF(item);
|
||||
Py_ReprLeave((PyObject *)op);
|
||||
return -1;
|
||||
}
|
||||
Py_DECREF(item);
|
||||
}
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
fprintf(fp, "]");
|
||||
|
|
Loading…
Reference in New Issue