diff options
author | andreas_kupries <akupries@shaw.ca> | 2009-07-24 16:51:28 (GMT) |
---|---|---|
committer | andreas_kupries <akupries@shaw.ca> | 2009-07-24 16:51:28 (GMT) |
commit | 410f05ea0612ecb96c5833d16c0a8216bcd7fb08 (patch) | |
tree | 46460d38d87914523bd6bb35a8746c8557614f71 /generic/tclPipe.c | |
parent | 8bed03c8ab1a815791db5f01335cccb517cf8bce (diff) | |
download | tcl-410f05ea0612ecb96c5833d16c0a8216bcd7fb08.zip tcl-410f05ea0612ecb96c5833d16c0a8216bcd7fb08.tar.gz tcl-410f05ea0612ecb96c5833d16c0a8216bcd7fb08.tar.bz2 |
* generic/tclIO.c (Tcl_GetChannelHandle): [Bug 2826248]: Do not crash
* generic/tclPipe.c (FileForRedirect): for getHandleProc == NULL, this
is allowed. Provide a nice error message in the bypass area. Updated
caller to check the bypass for a mesage. Bug reported by Andy
Sonnenburg <andy22286@users.sourceforge.net>. Backported from CVS
head.
Diffstat (limited to 'generic/tclPipe.c')
-rw-r--r-- | generic/tclPipe.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/generic/tclPipe.c b/generic/tclPipe.c index 561d390..90b1c1a 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclPipe.c,v 1.19 2007/04/20 06:10:58 kennykb Exp $ + * RCS: @(#) $Id: tclPipe.c,v 1.19.4.1 2009/07/24 16:51:28 andreas_kupries Exp $ */ #include "tclInt.h" @@ -102,9 +102,15 @@ FileForRedirect( } file = TclpMakeFile(chan, writing ? TCL_WRITABLE : TCL_READABLE); if (file == NULL) { - Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(chan), - "\" wasn't opened for ", - ((writing) ? "writing" : "reading"), NULL); + Tcl_Obj* msg; + Tcl_GetChannelError(chan, &msg); + if (msg) { + Tcl_SetObjResult (interp, msg); + } else { + Tcl_AppendResult(interp, "channel \"", Tcl_GetChannelName(chan), + "\" wasn't opened for ", + ((writing) ? "writing" : "reading"), NULL); + } return NULL; } *releasePtr = 1; |