Mercurial > cpython-lru_cache-weakref
diff Modules/_io/bufferedio.c @ 64209:dfd0229748ef 2.7
Merged revisions 84239 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r84239 | antoine.pitrou | 2010-08-21 21:09:32 +0200 (sam., 21 août 2010) | 4 lines
Issue #9617: Signals received during a low-level write operation aren't
ignored by the buffered IO layer anymore.
........
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Sat, 21 Aug 2010 19:17:25 +0000 |
| parents | c3ff6e910068 |
| children | 5a723b7aefb7 |
line wrap: on
line diff
--- a/Modules/_io/bufferedio.c Sat Aug 21 16:14:54 2010 +0000 +++ b/Modules/_io/bufferedio.c Sat Aug 21 19:17:25 2010 +0000 @@ -1670,6 +1670,11 @@ self->write_pos += n; self->raw_pos = self->write_pos; written += Py_SAFE_DOWNCAST(n, Py_off_t, Py_ssize_t); + /* Partial writes can return successfully when interrupted by a + signal (see write(2)). We must run signal handlers before + blocking another time, possibly indefinitely. */ + if (PyErr_CheckSignals() < 0) + goto error; } if (restore_pos) { @@ -1807,6 +1812,11 @@ } written += n; remaining -= n; + /* Partial writes can return successfully when interrupted by a + signal (see write(2)). We must run signal handlers before + blocking another time, possibly indefinitely. */ + if (PyErr_CheckSignals() < 0) + goto error; } if (self->readable) _bufferedreader_reset_buf(self);
