summaryrefslogtreecommitdiffstats
path: root/generic/tclIOCmd.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2023-08-31 13:47:09 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2023-08-31 13:47:09 (GMT)
commit58a2c303a9672d26927263158138e53999f3ba14 (patch)
tree82b4298ade923d575eec08b27371b143c316f7b8 /generic/tclIOCmd.c
parentf0ea214c57459a16eaa686227c785defd8e00ea8 (diff)
parent02a78b92090109006bb039333780eb3c904e034e (diff)
downloadtcl-58a2c303a9672d26927263158138e53999f3ba14.zip
tcl-58a2c303a9672d26927263158138e53999f3ba14.tar.gz
tcl-58a2c303a9672d26927263158138e53999f3ba14.tar.bz2
Rebase to 8.7
Diffstat (limited to 'generic/tclIOCmd.c')
-rw-r--r--generic/tclIOCmd.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/generic/tclIOCmd.c b/generic/tclIOCmd.c
index 5a0a8da..25e52b1 100644
--- a/generic/tclIOCmd.c
+++ b/generic/tclIOCmd.c
@@ -318,7 +318,9 @@ Tcl_GetsObjCmd(
lineLen = Tcl_GetsObj(chan, linePtr);
if (lineLen == TCL_IO_FAILURE) {
if (!Tcl_Eof(chan) && !Tcl_InputBlocked(chan)) {
- Tcl_DecrRefCount(linePtr);
+ Tcl_Obj *returnOptsPtr = Tcl_NewDictObj();
+ Tcl_DictObjPut(NULL, returnOptsPtr, Tcl_NewStringObj("-data", -1),
+ linePtr);
/*
* TIP #219.
@@ -333,6 +335,7 @@ Tcl_GetsObjCmd(
TclGetString(chanObjPtr), Tcl_PosixError(interp)));
}
code = TCL_ERROR;
+ Tcl_SetReturnOptions(interp, returnOptsPtr);
goto done;
}
lineLen = TCL_IO_FAILURE;
@@ -459,7 +462,9 @@ Tcl_ReadObjCmd(
TclChannelPreserve(chan);
charactersRead = Tcl_ReadChars(chan, resultPtr, toRead, 0);
if (charactersRead == TCL_IO_FAILURE) {
- Tcl_DecrRefCount(resultPtr);
+ Tcl_Obj *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,7 @@ Tcl_ReadObjCmd(
TclGetString(chanObjPtr), Tcl_PosixError(interp)));
}
TclChannelRelease(chan);
+ Tcl_SetReturnOptions(interp, returnOptsPtr);
return TCL_ERROR;
}