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:
Antoine Pitrou 2009-10-27 12:56:06 +00:00
parent 9aece75269
commit 686c9adbd5
3 changed files with 10 additions and 1 deletions

View File

@ -167,6 +167,7 @@ Arnaud Delobelle
Erik Demaine
Roger Dev
Raghuram Devarakonda
Scott Dial
Toby Dickenson
Mark Dickinson
Daniel Diniz

View File

@ -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
-------

View File

@ -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, "]");