summaryrefslogtreecommitdiffstats
path: root/generic/tclIORChan.c
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2023-05-19 23:07:13 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2023-05-19 23:07:13 (GMT)
commit1b8701ee3d55320b42676e77ce32c04950facee6 (patch)
tree53582f83932c90609c0ae3a75d3668f48369187f /generic/tclIORChan.c
parent16a75f3cbf8ba7ab30d4f5f1adcd658269d9ae8c (diff)
parent83d22bd1f6fd20b5ce07fc4e16af80619f859422 (diff)
downloadtcl-1b8701ee3d55320b42676e77ce32c04950facee6.zip
tcl-1b8701ee3d55320b42676e77ce32c04950facee6.tar.gz
tcl-1b8701ee3d55320b42676e77ce32c04950facee6.tar.bz2
Merge trunk
Diffstat (limited to 'generic/tclIORChan.c')
-rw-r--r--generic/tclIORChan.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index f2138c4..c7cbfe5 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -580,6 +580,9 @@ TclChanCreateObjCmd(
rcId = NextHandle();
rcPtr = NewReflectedChannel(interp, cmdObj, mode, rcId);
+ if (!rcPtr) {
+ return TCL_ERROR;
+ }
/*
* Invoke 'initialize' and validate that the handler is present and ok.
@@ -2258,8 +2261,10 @@ NewReflectedChannel(
rcPtr->mode = mode;
rcPtr->interest = 0; /* Initially no interest registered */
- /* ASSERT: cmdpfxObj is a Tcl List */
- rcPtr->cmd = TclListObjCopy(NULL, cmdpfxObj);
+ rcPtr->cmd = TclDuplicatePureObj(interp, cmdpfxObj, &tclListType.objType);
+ if (!rcPtr->cmd) {
+ return NULL;
+ }
Tcl_IncrRefCount(rcPtr->cmd);
rcPtr->methods = Tcl_NewListObj(METH_WRITE + 1, NULL);
while (mn <= (int)METH_WRITE) {
@@ -2396,8 +2401,10 @@ InvokeTclMethod(
* before the channel id.
*/
- cmd = TclListObjCopy(NULL, rcPtr->cmd);
-
+ cmd = TclDuplicatePureObj(NULL, rcPtr->cmd, &tclListType.objType);
+ if (!cmd) {
+ return TCL_ERROR;
+ }
Tcl_ListObjIndex(NULL, rcPtr->methods, method, &methObj);
Tcl_ListObjAppendElement(NULL, cmd, methObj);
Tcl_ListObjAppendElement(NULL, cmd, rcPtr->name);