Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Also ensure no encoding exceptions raised when reading pipe stderr |
|---|---|
| Timelines: | family | ancestors | descendants | both | apn-bug-0f1ddc0df7 |
| Files: | files | file ages | folders |
| SHA3-256: |
734e20257ef7d2475534bfbfc1368be7 |
| User & Date: | apnadkarni 2023-12-05 16:57:32.819 |
| Original Comment: | Also ensure no exceptions raised when reading pipe stderr |
Context
|
2023-12-05
| ||
| 17:29 | Comment correction: Error channels should *not* raise encoding errors Closed-Leaf check-in: 78b651f917 user: oehhar tags: apn-bug-0f1ddc0df7 | |
| 16:57 | Also ensure no encoding exceptions raised when reading pipe stderr check-in: 734e20257e user: apnadkarni tags: apn-bug-0f1ddc0df7 | |
| 13:44 | Proposed fix for [0f1ddc0df7]. check-in: 614c66e866 user: apnadkarni tags: apn-bug-0f1ddc0df7 | |
Changes
Changes to tests/exec.test.
| ︙ | ︙ | |||
710 711 712 713 714 715 716 |
test exec-20.1 {exec .CMD file} -constraints {win} -body {
set log [makeFile {} exec201.log]
exec [makeFile "echo %1> $log" exec201.CMD] "Testing exec-20.1"
viewFile $log
} -result "\"Testing exec-20.1\""
# Test with encoding mismatches (Bug 0f1ddc0df7fb7)
| | > > > > > > > > > > > > > | 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 |
test exec-20.1 {exec .CMD file} -constraints {win} -body {
set log [makeFile {} exec201.log]
exec [makeFile "echo %1> $log" exec201.CMD] "Testing exec-20.1"
viewFile $log
} -result "\"Testing exec-20.1\""
# Test with encoding mismatches (Bug 0f1ddc0df7fb7)
test exec-21.1 {exec encoding mismatch on stdout} -setup {
set path(script) [makeFile {
fconfigure stdout -translation binary
puts a\xe9b
} script]
set enc [encoding system]
encoding system utf-8
} -cleanup {
removeFile $path(script)
encoding system $enc
} -body {
exec [info nameofexecutable] $path(script)
} -result a\uFFFDb
test exec-21.2 {exec encoding mismatch on stderr} -setup {
set path(script) [makeFile {
fconfigure stderr -translation binary
puts stderr a\xe9b
} script]
set enc [encoding system]
encoding system utf-8
} -cleanup {
removeFile $path(script)
encoding system $enc
} -body {
list [catch {exec [info nameofexecutable] $path(script)} r] $r
} -result [list 1 a\uFFFDb]
# ----------------------------------------------------------------------
# cleanup
foreach file {gorp.file gorp.file2 echo echo2 cat wc sh sh2 sleep exit err} {
removeFile $file
|
| ︙ | ︙ |
Changes to unix/tclUnixPipe.c.
| ︙ | ︙ | |||
1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 |
* routine.
*/
if (pipePtr->errorFile) {
errChan = Tcl_MakeFileChannel(
INT2PTR(GetFd(pipePtr->errorFile)),
TCL_READABLE);
} else {
errChan = NULL;
}
result = TclCleanupChildren(interp, pipePtr->numPids, pipePtr->pidPtr,
errChan);
}
| > > | 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 |
* routine.
*/
if (pipePtr->errorFile) {
errChan = Tcl_MakeFileChannel(
INT2PTR(GetFd(pipePtr->errorFile)),
TCL_READABLE);
/* Error channels should raise encoding errors */
Tcl_SetChannelOption(NULL, errChan, "-profile", "replace");
} else {
errChan = NULL;
}
result = TclCleanupChildren(interp, pipePtr->numPids, pipePtr->pidPtr,
errChan);
}
|
| ︙ | ︙ |
Changes to win/tclWinPipe.c.
| ︙ | ︙ | |||
2119 2120 2121 2122 2123 2124 2125 |
if (pipePtr->errorFile) {
WinFile *filePtr = (WinFile *) pipePtr->errorFile;
errChan = Tcl_MakeFileChannel((void *) filePtr->handle,
TCL_READABLE);
Tcl_Free(filePtr);
| > > | | 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 |
if (pipePtr->errorFile) {
WinFile *filePtr = (WinFile *) pipePtr->errorFile;
errChan = Tcl_MakeFileChannel((void *) filePtr->handle,
TCL_READABLE);
Tcl_Free(filePtr);
Tcl_SetChannelOption(NULL, errChan, "-profile", "replace");
}
else {
errChan = NULL;
}
result = TclCleanupChildren(interp, pipePtr->numPids,
pipePtr->pidPtr, errChan);
}
|
| ︙ | ︙ |