String#<< can result in string that lies about String#valid_encoding?
s1 = "aa".force_encoding("utf-16be")
s2 = "\xFF".force_encoding("utf-16be")
s1 << s2
s1.valid_encoding? # => true
s1.valid_encoding? # => false
This issue only happens with UTF-16BE/LE and UTF-32BE/LE. It also only happens if you call String#valid_encoding? before concat with the second string.
Updated by nobu (Nobuyoshi Nakada) over 11 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r29676.
Timothy, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.