Antoine Pitrou <pit...@free.fr> added the comment: Le dimanche 15 août 2010 à 18:53 +0000, Martin v. Löwis a écrit : > Martin v. Löwis <mar...@v.loewis.de> added the comment: > > > Well, the loop stops when an error status is returned by the raw IO > > layer. At that point, the buffered IO layer re-raises the error after a > > bit of internal cleanup. > > Assume the following case: > 1. writing starts, and writes some data > 2. Ctrl-C is pressed, raises a signal, and interrupts the current > system call (EINTR) > 3. having already written data, the signal is discarded, and the > number of successfully written bytes is returned. > 4. the loop retries to write the rest. Not receiving any signal > anymore, the subsequent write operations wait for completion.
Ok, I guess the loop should run PyErr_CheckSignals() somewhere. Simulate such a situation in an unit test will be a bit tricky. Perhaps we can use os.pipe() and depend on the fact that writes greater than the pipe buffer size will be blocking. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue9611> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com