Tcl Source Code

View Ticket
Login
Ticket UUID: 382e6c509c7c0355f3e362ab16b8706339b98cd7
Title: [read] loses data under strict encoding
Type: Bug Version:
Submitter: pooryorick Created on: 2023-04-14 09:33:18
Subsystem: - New Builtin Commands Assigned To: nobody
Priority: 5 Medium Severity: Important
Status: Open Last Modified: 2023-04-14 09:33:18
Resolution: None Closed By: nobody
    Closed on:
Description: (text/x-fossil-wiki)
In the following script, the sequence \xc0\x40 is invalid for utf-8, and
<code>read</code> produces an error.  When the profile is changed to "replace",
<code>read</code> should then produce <code>AB...</code>, but instead it loses
<code>AB</code> and produces characters starting at the invalid sequence.

<blockquote><code><verbatim>
set chan [file tempfile]
chan configure $chan -translation binary
# This is not valid UTF-8
puts $chan helloAB\xc0\x40CD\nEFG
flush $chan
seek $chan 0

chan configure $chan -encoding utf-8 -profile strict
set data [read $chan 5]; #-> hello
puts $data
catch {read $chan 5} res ;#-> error message
puts $res
chan configure $chan -profile replace
set data [read $chan 5] ;#-> does not start with "AB"
puts $data
</verbatim></code></blockquote>