summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog24
1 files changed, 24 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 8e541a3..0a3c241 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2001-09-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+
+ * The changes below fix [Bug #462317] where Expect tried to read
+ more than was in the buffers and then blocked in the OS call as
+ its pty channel driver provides no blockmodeproc through which
+ the OS could be notified of blocking-behaviour. Because of this
+ the general I/O core has to take more care than usual to
+ preserve the semantics of non-blocking channels.
+
+ * generic/tclIO.c (Tcl_ReadRaw): Do not read from the driver if
+ the channel is non-blocking and the fileevent causing the read
+ was generated by a timer. We do not know if there is data
+ available from the OS. Instead of going to the OS for more and
+ potentially blocking we simply signal EWOULDBLOCK to the higher
+ levels to cause the system to wait for true fileevents.
+ (GetInput): Same as before.
+ (ChannelTimerProc): Added set and clear of CHANNEL_TIMER_FEV.
+
+ * generic/tclIO.h (CHANNEL_TIMER_FEV): New flag for channels. Is
+ set if a fileevent was generated by a timer, the channel is not
+ blocking and the driver did not provide a blockmodeproc. In that
+ case the I/O core has to be especially careful about going to
+ the driver for more data.
+
2001-09-26 Don Porter <dgp@users.sourceforge.net>
* doc/SplitPath.3 (Tcl_GetPathType):