diff options
| author | andreask@activestate.com <andreas_kupries> | 2009-10-23 19:08:44 (GMT) |
|---|---|---|
| committer | andreask@activestate.com <andreas_kupries> | 2009-10-23 19:08:44 (GMT) |
| commit | 409ff4836a210bed7c8f726a0ad67c4a51a8b13c (patch) | |
| tree | 2109da7eb4d642c73dcff2082b77795c03f0711a /generic/tclIO.c | |
| parent | 608486905ebe7f45c9b93c9a6e4a61fc5d6ce114 (diff) | |
| download | tcl-409ff4836a210bed7c8f726a0ad67c4a51a8b13c.zip tcl-409ff4836a210bed7c8f726a0ad67c4a51a8b13c.tar.gz tcl-409ff4836a210bed7c8f726a0ad67c4a51a8b13c.tar.bz2 | |
* generic/tclIO.c (FlushChannel): Skip OutputProc for low-level
0-length writes. When closing pipes which have already been closed
not skipping leads to spurious SIG_PIPE signals. Reported by
Mikhail Teterin <mi+thun@aldan.algebra.com>.
Diffstat (limited to 'generic/tclIO.c')
| -rw-r--r-- | generic/tclIO.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c index 8e00054..11cb205 100644 --- a/generic/tclIO.c +++ b/generic/tclIO.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIO.c,v 1.61.2.32 2008/12/01 21:48:01 dgp Exp $ + * RCS: @(#) $Id: tclIO.c,v 1.61.2.33 2009/10/23 19:08:45 andreas_kupries Exp $ */ #include "tclInt.h" @@ -2131,9 +2131,13 @@ FlushChannel(interp, chanPtr, calledFromAsyncFlush) */ toWrite = bufPtr->nextAdded - bufPtr->nextRemoved; - written = (chanPtr->typePtr->outputProc) (chanPtr->instanceData, + if (toWrite == 0) { + written = 0; + } else { + written = (chanPtr->typePtr->outputProc) (chanPtr->instanceData, bufPtr->buf + bufPtr->nextRemoved, toWrite, &errorCode); + } /* * If the write failed completely attempt to start the asynchronous |
