From 9e8f28aa4fa1151a2b88899630fb995dd83bd024 Mon Sep 17 00:00:00 2001 From: Vince Darley Date: Thu, 9 Aug 2001 11:20:28 +0000 Subject: [PATCH] Fix for open channels --- generic/vfs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/generic/vfs.c b/generic/vfs.c index b1e6ba5..c0a9380 100644 --- a/generic/vfs.c +++ b/generic/vfs.c @@ -657,14 +657,13 @@ VfsOpenFileChannel(cmdInterp, pathPtr, modeString, permissions) channelRet = (VfsChannelCleanupInfo*) ckalloc(sizeof(VfsChannelCleanupInfo)); channelRet->channel = theChannel; + channelRet->interp = interp; if (reslen == 2) { Tcl_ListObjIndex(interp, resultObj, 1, &element); channelRet->closeCallback = element; Tcl_IncrRefCount(channelRet->closeCallback); - channelRet->interp = interp; } else { channelRet->closeCallback = NULL; - channelRet->interp = NULL; } } } @@ -687,8 +686,9 @@ VfsOpenFileChannel(cmdInterp, pathPtr, modeString, permissions) * anyone. We use Tcl_DetachChannel to do this for us. */ chan = channelRet->channel; - /* We must use the correct interpreter, not our own 'vfs' interpreter */ - Tcl_DetachChannel(channelRet->interp, chan); + /* We must use the correct interpreter */ + Tcl_DetachChannel(interp, chan); + if (channelRet->closeCallback != NULL) { Tcl_CreateCloseHandler(chan, &VfsCloseProc, (ClientData)channelRet); /* The channelRet structure will be freed in the callback */ -- 2.23.0