diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-08-31 13:47:09 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-08-31 13:47:09 (GMT) |
commit | 58a2c303a9672d26927263158138e53999f3ba14 (patch) | |
tree | 82b4298ade923d575eec08b27371b143c316f7b8 /generic/tclIOCmd.c | |
parent | f0ea214c57459a16eaa686227c785defd8e00ea8 (diff) | |
parent | 02a78b92090109006bb039333780eb3c904e034e (diff) | |
download | tcl-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.c | 10 |
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; } |