Diff
Not logged in

Differences From Artifact [08a130c920]:

To Artifact [285ee59c8b]:


9139
9140
9141
9142
9143
9144
9145
9146

9147
9148
9149
9150
9151
9152
9153
9154

9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165

9166
9167
9168
9169
9170
9171
9172
9173

9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188

9189
9190
9191
9192
9193
9194
9195
9139
9140
9141
9142
9143
9144
9145

9146
9147
9148
9149
9150
9151
9152
9153

9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164

9165
9166
9167
9168
9169
9170
9171
9172

9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187

9188
9189
9190
9191
9192
9193
9194
9195







-
+







-
+










-
+







-
+














-
+







    close $f
    binary scan $d H* hd
    set hd
} -cleanup {
    removeFile io-75.5
} -result 4181

test io-75.6 {invalid utf-8 encoding read is not ignored (-strictencoding 1)} -setup {
test io-75.6 {invalid utf-8 encoding read is not ignored (-encodingprofile strict)} -setup {
    set fn [makeFile {} io-75.6]
    set f [open $fn w+]
    fconfigure $f -encoding binary
    # \x81 is invalid in utf-8
    puts -nonewline $f A\x81
    flush $f
    seek $f 0
    fconfigure $f -encoding utf-8 -buffering none -eofchar "" -translation lf -strictencoding 1
    fconfigure $f -encoding utf-8 -buffering none -eofchar "" -translation lf -encodingprofile strict
} -body {
    set d [read $f]
    binary scan $d H* hd
    lappend hd [catch {read $f} msg]
    close $f
    lappend hd $msg
} -cleanup {
    removeFile io-75.6
} -match glob -result {41 1 {error reading "*": illegal byte sequence}}

test io-75.7 {invalid utf-8 encoding eof handling (-strictencoding 1)} -setup {
test io-75.7 {invalid utf-8 encoding eof handling (-encodingprofile strict)} -setup {
    set fn [makeFile {} io-75.7]
    set f [open $fn w+]
    fconfigure $f -encoding binary
    # \xA1 is invalid in utf-8. -eofchar is not detected, because it comes later.
    puts -nonewline $f A\xA1\x1A
    flush $f
    seek $f 0
    fconfigure $f -encoding utf-8 -buffering none -eofchar \x1A -translation lf -strictencoding 1
    fconfigure $f -encoding utf-8 -buffering none -eofchar \x1A -translation lf -encodingprofile strict
} -body {
    set d [read $f]
    binary scan $d H* hd
    lappend hd [eof $f]
    lappend hd [catch {read $f} msg]
    lappend hd $msg
    fconfigure $f -encoding iso8859-1
    lappend hd [read $f];# We changed encoding, so now we can read the \xA1
    close $f
    set hd
} -cleanup {
    removeFile io-75.7
} -match glob -result {41 0 1 {error reading "*": illegal byte sequence} ยก}

test io-75.8 {invalid utf-8 encoding eof handling (-strictencoding 1)} -setup {
test io-75.8 {invalid utf-8 encoding eof handling (-encodingprofile strict)} -setup {
    set fn [makeFile {} io-75.8]
    set f [open $fn w+]
    fconfigure $f -encoding binary
    # \x81 is invalid in utf-8, but since \x1A comes first, -eofchar takes precedence.
    puts -nonewline $f A\x1A\x81
    flush $f
    seek $f 0
9248
9249
9250
9251
9252
9253
9254
9255

9256
9257
9258
9259
9260
9261
9262
9248
9249
9250
9251
9252
9253
9254

9255
9256
9257
9258
9259
9260
9261
9262







-
+







    set f [open $fn w+]
    fconfigure $f -encoding binary
    # In shiftjis, \x81 starts a two-byte sequence.
    # But 2nd byte \xFF is not allowed
    puts -nonewline $f A\x81\xFFA
    flush $f
    seek $f 0
    fconfigure $f -encoding shiftjis -buffering none -eofchar "" -translation lf -strictencoding 1
    fconfigure $f -encoding shiftjis -buffering none -eofchar "" -translation lf -encodingprofile strict
} -body {
    set d [read $f]
    binary scan $d H* hd
    lappend hd [catch {set d [read $f]} msg]
    lappend hd $msg
} -cleanup {
    close $f
9275
9276
9277
9278
9279
9280
9281
9282

9283
9284
9285
9286
9287
9288
9289
9290

9291
9292
9293
9294
9295
9296
9297
9275
9276
9277
9278
9279
9280
9281

9282
9283
9284
9285
9286
9287
9288
9289

9290
9291
9292
9293
9294
9295
9296
9297







-
+







-
+







    set d [read $f]
    close $f
    binary scan $d H* hd
    set hd
} -cleanup {
    removeFile io-75.12
} -result 4181
test io-75.13 {invalid utf-8 encoding read is not ignored (-strictencoding 1)} -setup {
test io-75.13 {invalid utf-8 encoding read is not ignored (-encodingprofile strict)} -setup {
    set fn [makeFile {} io-75.13]
    set f [open $fn w+]
    fconfigure $f -encoding binary
    # \x81 is invalid in utf-8
    puts -nonewline $f "A\x81"
    flush $f
    seek $f 0
    fconfigure $f -encoding utf-8 -buffering none -eofchar "" -translation lf -strictencoding 1
    fconfigure $f -encoding utf-8 -buffering none -eofchar "" -translation lf -encodingprofile strict
} -body {
    set d [read $f]
    binary scan $d H* hd
    lappend hd [catch {read $f} msg]
    close $f
    lappend hd $msg
} -cleanup {