| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
result in a panic.
The relevant function is ReadChars() (short RC in the following).
When the encoding and translation transforms deliver more characters
than were requested the iterative algorithm used by RC reduces the
value of "dstLimit" (= the number of bytes allowed to be copied into
the destination buffer) to force the next round to deliver less
characters, hopefully the number requested.
The existing code used the byte located just after the last wanted
character to determine the new limit. The resulting value could
_undershoot_ the best possible limit because Tcl_ExternalToUtf would
effectively reduce this limit further, by TCL_UTF_MAX+1, to have
enough space for a single multi-byte character in the buffer, and a
closing '\0' as well.
One effect of this were additional calls to ReadChars() to retrieve
the characters missed by a call with an undershot limit.
In the limit (sic) however this was also able to cause a full-blown
"Buffer Underflow" panic if the original request was for less than
TCL_UTF_MAX characters (*), and we are using a single-byte encoding
like iso-8859-1. Because then the undershot dstLimit would prevent the
next round from copying anything, and causing it to try and
consolidate the current buffer with the next buffer, thinking that it
had to merge a multi-byte character split across buffer boundaries.
(Ad *) For example because the previous call had undershot already and
left only such a small amount of characters behind!
The basic fix to the problem is to add TCL_UTF_MAX back to the limit,
like is done in all the (three) other places in RC setting a new
one. Note however that this naive fix may generate a new limit which
is the same as the old, or possibly larger. If that happens we act
very conservatively and reduce the limit by only one byte instead.
While I believe that this last conservative approach will never reduce
the limit to TCL_UTF_MAX or less before reaching a state where it
returnds the exact amount of requested characters I still added a
check against this situation anyway, causing a new panic if triggered.
|
|/
|
|
|
|
|
| |
get it right on the next pass, don't forget the TCL_UTF_MAX padding
demanded by Tcl_ExternalToUtf(). (Thanks for finding that, aku!)
Fix the factorPtr management. It was just totaly wrong. The factor should
be a ratio of the record of bytes read to the record of chars read.
With those fixes, new test io-12.6 covers the "too many chars" code.
|
|
|
|
|
| |
which is its only caller. We need to discard the curOutPtr buffer as well,
and not count on another pass through the loop to attempt to flush it
(and raise the same failure again?).
|
|\ |
|
| |\ |
|
| | |
| | |
| | |
| | | |
Several socket-14.* tests failing there, and those that pass are very slow
about it. Firewall or poor networking configuration may be playing a role.
|
| | |
| | |
| | | |
a whole raft of test failures. WIP.
|
| | |
| | |
| | |
| | | |
but don't resolve localhost to ::1 (and vice versa for IPv4 and 127.0.0.1).
|
| | |\
| |_|/
|/| |
| | | |
PipeWatchProc(). When we are interested in both readable and writable events of a command pipeline channel, we only want the readable from the read end of the pipe, and the writable from the write end of the pipe.
|
| | |
| | |
| | |
| | |
| | | |
PipeWatchProc(). When we are interested in both readable and writable
events of a command pipeline channel, we only want the readable from
the read end of the pipe, and the writable from the write end of the pipe.
|
| | |\
| |_|/
|/| |
| | | |
the flag BUFFER_READY.
|
| | |\
| | | |
| | | |
| | | |
| | | | |
platforms into the trunk. For details see the merged revision and its
ancestor.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
[dict create] to explicitly state that it returns the new dictionary.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
value.
|
| | | | |
|
| | | | |
|
| | | | | |
| | | \ | |
| | |\ \ \
| | | | | |
| | | | | |
| | | | | | |
particular not allowing them to leak between multiple layers of a stacked channel. Much common code refactored into ChanRead().
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | | |
direct clearing of CHANNEL_EOF flag.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | | |
longer leaking across channel stacks.
|
| | | | | | |
|
| | | |\ \ \ |
|
| | | |\ \ \ \ |
|
| | | |\ \ \ \ \
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
began repairing some of the logic about them. Tests iogt-2.* now fail because
they've been crafted as experiments recording the fine detail of reflected
channel driver calls, and fixing the management of channel flags is changing
that. zlib-8.5 also needed adjustment to reflect that an EOF set must come
with an empty string read when flags are functioning properly.
|
| | |\ \ \ \ \ \ \ |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Windows where it makes sense.
* Rework WaitForConnect once more to always report ENOTCONN on I/O operations on failed async sockets.
* Fix synchronous connections to a server that only listens on IPv6 (or whatever comes later in the list returned by getaddrinfo(), socket-15.*)
* Fix spurious writable event on async sockets (socket-14.15).
|
| | | | | | | | | | |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
'fconfigure -error' and not by a possible last command terminating the async connect. The terminating command always returns "socket is not connected" on connect error. In addition, some flags were renamed: TCP_ASYNC_SOCKET to TCP_NONBLOCKING and also the new state flags.
|
| | | | | | | | | | |
|
| | | | | | | | | | |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
connectError
|
| | | | | | | | | | |
|
| | | | | | | | | | |
|
| | |\ \ \ \ \ \ \ \
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
***POTENTIAL INCOMPATIBILITY***
Changes results of both [lsearch -integer] and [lsort -integer].
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
"lsearch -sorted -integer" on 64bit system
|
| | | |_|_|_|_|/ / /
| | |/| | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
lines and misplaced tabs. Useful e.g. to just set CFLAGS to debug and save.
|
| | |\ \ \ \ \ \ \ \ |
|
| | |\ \ \ \ \ \ \ \ \
| | | |_|_|_|_|_|/ / /
| | |/| | | | | | | |
| | | | | | | | | | | |
starting with <drive>: but without a following slash should be considered volume-relative i.e. the ':' is valid here.
|
| | |\ \ \ \ \ \ \ \ \
| | | |_|_|_|_|/ / / /
| | |/| | | | | | | | |
|
| | |\ \ \ \ \ \ \ \ \ |
|
| | |\ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
take an unbearable 90 seconds each to complete.
|
| | | |_|_|_|_|/ / / / /
| | |/| | | | | | | | |
| | | | | | | | | | | | |
passed to the read method of the channel transformation command. Save a copy.
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
of a chain of compileable ensembles.
|
| | | | | | | | | | | | |
|
| | |\ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
"knownBug" rather than "unknownFailure".
|