summaryrefslogtreecommitdiffstats
path: root/generic/tclIOCmd.c
diff options
context:
space:
mode:
authoroehhar <harald.oehlmann@elmicron.de>2023-11-20 13:32:47 (GMT)
committeroehhar <harald.oehlmann@elmicron.de>2023-11-20 13:32:47 (GMT)
commit88a32b8959860e8891f73548cc49b33749949a8f (patch)
tree4430b7baf3d0eb3bd90404e69470d8fb730978de /generic/tclIOCmd.c
parentee8ac648cb65c6e491229e0192fa5b7b4b6e3d06 (diff)
parentc3de06ef3212fee8a8d4b4fed7ec8b2fc2b8273d (diff)
downloadtcl-88a32b8959860e8891f73548cc49b33749949a8f.zip
tcl-88a32b8959860e8891f73548cc49b33749949a8f.tar.gz
tcl-88a32b8959860e8891f73548cc49b33749949a8f.tar.bz2
Merge core-8-branch
Diffstat (limited to 'generic/tclIOCmd.c')
-rw-r--r--generic/tclIOCmd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c
index 938fa01..9667419 100644
--- a/generic/tclIOCmd.c
+++ b/generic/tclIOCmd.c
@@ -459,7 +459,12 @@ Tcl_ReadObjCmd(
TclChannelPreserve(chan);
charactersRead = Tcl_ReadChars(chan, resultPtr, toRead, 0);
if (charactersRead == TCL_IO_FAILURE) {
- Tcl_DecrRefCount(resultPtr);
+ Tcl_Obj *returnOptsPtr = NULL;
+ if (TclChannelGetBlockingMode(chan)) {
+ returnOptsPtr = Tcl_NewDictObj();
+ Tcl_DictObjPut(NULL, returnOptsPtr, Tcl_NewStringObj("-data", -1),
+ resultPtr);
+ }
/*
* TIP #219.
* Capture error messages put by the driver into the bypass area and
@@ -473,6 +478,9 @@ Tcl_ReadObjCmd(
TclGetString(chanObjPtr), Tcl_PosixError(interp)));
}
TclChannelRelease(chan);
+ if (returnOptsPtr) {
+ Tcl_SetReturnOptions(interp, returnOptsPtr);
+ }
return TCL_ERROR;
}