Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | The write and flush operations of reflected transforms ([chan push]) have been converting all lower level channel errors from Tcl_WriteRaw() into EINVAL. Generally this is a perplexing discard of useful information, but worse it interferes with the EAGAIN signalling that is required to manage the BLOCKED state of a nonblocking channel. Thanks to aspect for demo scripts that pointed to the bug. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
cedfcfd1b56af9c986190c06ec29d831 |
User & Date: | dgp 2014-07-08 13:45:09 |
Context
2014-07-09
| ||
18:49 | Don't use Tcl_GetCommandInfo when Tcl_FindCommand suffices. check-in: 352223b866 user: jan.nijtmans tags: trunk | |
14:44 | First draft of using buffer moves in place of buffer copies to create an efficient [chan copy]. check-in: 7a8b871fc7 user: dgp tags: dgp-move-buffers | |
2014-07-08
| ||
14:02 | merge trunk check-in: 25d30e5445 user: dgp tags: dgp-refactor | |
13:45 | The write and flush operations of reflected transforms ([chan push]) have been converting all lower ... check-in: cedfcfd1b5 user: dgp tags: trunk | |
2014-07-04
| ||
12:49 | Update Unicode tables to Unicode 7.0 check-in: 735fdb4267 user: jan.nijtmans tags: trunk, potential incompatibility | |
Changes
Changes to generic/tclIORTrans.c.
︙ | ︙ | |||
3174 3175 3176 3177 3178 3179 3180 | res = Tcl_WriteRaw(rtPtr->parent, (char *) bytev, bytec); Tcl_DecrRefCount(bufObj); Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ } if (res < 0) { | | | 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 | res = Tcl_WriteRaw(rtPtr->parent, (char *) bytev, bytec); Tcl_DecrRefCount(bufObj); Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ } if (res < 0) { *errorCodePtr = Tcl_GetErrno(); return 0; } return 1; } static int |
︙ | ︙ | |||
3284 3285 3286 3287 3288 3289 3290 | } else { res = 0; } Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ } if (res < 0) { | | | 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 | } else { res = 0; } Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */ } if (res < 0) { *errorCodePtr = Tcl_GetErrno(); return 0; } return 1; } static void |
︙ | ︙ |