Attachment "enospc.patch" to
ticket [2888099fff]
added by
ferrieux
2009-11-11 05:09:38.
Index: generic/tclIO.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclIO.c,v
retrieving revision 1.165
diff -u -r1.165 tclIO.c
--- generic/tclIO.c 9 Nov 2009 13:47:23 -0000 1.165
+++ generic/tclIO.c 10 Nov 2009 22:08:45 -0000
@@ -2976,6 +2976,7 @@
ChannelState *statePtr; /* State of real IO channel. */
int result; /* Of calling FlushChannel. */
int flushcode;
+ int stickyError;
if (chan == NULL) {
return TCL_OK;
@@ -3017,10 +3018,14 @@
* iso2022, the terminated escape sequence must write to the buffer.
*/
+ stickyError = 0;
+
if ((statePtr->encoding != NULL) && (statePtr->curOutPtr != NULL)
&& (CheckChannelErrors(statePtr, TCL_WRITABLE) == 0)) {
statePtr->outputEncodingFlags |= TCL_ENCODING_END;
- WriteChars(chanPtr, "", 0);
+ if (WriteChars(chanPtr, "", 0) < 0) {
+ stickyError = Tcl_GetErrno();
+ }
/*
* TIP #219, Tcl Channel Reflection API.
@@ -3099,6 +3104,14 @@
result = EINVAL;
}
+ if (stickyError != 0) {
+ Tcl_SetErrno(stickyError);
+ if (interp != NULL) {
+ Tcl_SetObjResult(interp,
+ Tcl_NewStringObj(Tcl_PosixError(interp), -1));
+ }
+ flushcode = -1;
+ }
if ((flushcode != 0) || (result != 0)) {
return TCL_ERROR;
}