diff options
author | andreas_kupries <akupries@shaw.ca> | 2004-07-15 20:46:49 (GMT) |
---|---|---|
committer | andreas_kupries <akupries@shaw.ca> | 2004-07-15 20:46:49 (GMT) |
commit | d030c083e5dd7913feb8736f3727f316fe525876 (patch) | |
tree | 57898ba81f1e08b32a243a13819f2637f6435d74 /doc | |
parent | ac5258caba03972be43bafc65a38ad4571af178f (diff) | |
download | tcl-d030c083e5dd7913feb8736f3727f316fe525876.zip tcl-d030c083e5dd7913feb8736f3727f316fe525876.tar.gz tcl-d030c083e5dd7913feb8736f3727f316fe525876.tar.bz2 |
* generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in
* generic/tclIO.c (Tcl_UnregisterChannel): 'Tcl_Close' while the
* generic/tclIO.c (Tcl_Close): close callbacks are
run. Checked in 'Tcl_Close' and 'Tcl_Unregister' to prevent
recursive call of 'close' in the close-callbacks. This is a
possible error made by implementors of virtual filesystems based
on 'tclvfs', thinking that they have to close the channel in the
close handler for the filesystem.
* generic/tclIO.c:
* generic/tclIO.h:
* Not reverting, but #ifdef'ing the changes from May 19, 2004 out
of the core. This removes the ***POTENTIAL INCOMPATIBILITY***
for channel drivers it introduced. This has become possible due
to Expect gaining a BlockModeProc and now handling blockingg and
non-blocking modes correctly. Thus [SF Tcl Bug 943274] is still
fixed if a recent enough version of Expect is used.
* doc/CrtChannel.3: Added warning about usage of a channel without
a BlockModeProc.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/CrtChannel.3 | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3 index 477ef67..0ce3e4c 100644 --- a/doc/CrtChannel.3 +++ b/doc/CrtChannel.3 @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: CrtChannel.3,v 1.16 2002/07/01 18:24:39 jenglish Exp $ +'\" RCS: @(#) $Id: CrtChannel.3,v 1.17 2004/07/15 20:46:49 andreas_kupries Exp $ .so man.macros .TH Tcl_CreateChannel 3 8.3 Tcl "Tcl Library Procedures" .BS @@ -405,6 +405,13 @@ behavior must be emulated in the channel driver. .PP This value can be retrieved with \fBTcl_ChannelBlockModeProc\fR, which returns a pointer to the function. +.PP +A channel driver \fBnot\fR supplying a \fIblockModeProc\fR has to be +very, very careful. It has to tell the generic layer exactly which +blocking mode is acceptable to it, and should this also document for +the user so that the blocking mode of the channel is not changed to an +inacceptable value. Any confusion here may lead the interpreter into a +(spurious and difficult to find) deadlock. .SH "CLOSEPROC AND CLOSE2PROC" .PP |