Actions
Bug #20802
closedIt is possible to set the encoding of an IO instance to one that requires binmode when binmode is not set
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [x86_64-linux]
Description
I don't know what problems this may cause, but there are guards against setting the encoding of an IO instance to one such as UTF-16LE when the IO instance is not set to binary mode. Here is a method to bypass those guards:
f1 = File.open('/dev/null')
f2 = File.open('/dev/null')
f1.binmode
f1.set_encoding('utf-16le')
f2.set_encoding('utf-8')
f1.reopen(f2)
f1.binmode? # <= false
f1.external_encoding # <= Encoding::UTF_16LE
Updated by javanthropus (Jeremy Bopp) about 1 month ago
- Description updated (diff)
Updated by nobu (Nobuyoshi Nakada) 15 days ago
- Status changed from Open to Closed
Applied in changeset git|1701ddea73cf482289361c7559ad42e2694f65f1.
[Bug #20802] Copy encodings at reopen as well
Actions
Like0
Like0Like0