From: "ima1zumi (Mari Imaizumi) via ruby-core" Date: 2025-03-11T09:05:56+00:00 Subject: [ruby-core:121290] [Ruby master Bug#21176] Regression in case-insensitive matching for single-byte encodings Issue #21176 has been updated by ima1zumi (Mari Imaizumi). Description updated ; ---------------------------------------- Bug #21176: Regression in case-insensitive matching for single-byte encodings https://bugs.ruby-lang.org/issues/21176#change-112254 * Author: ima1zumi (Mari Imaizumi) * Status: Open * ruby -v: ruby 3.5.0dev (2025-02-28T09:32:36Z master db4ea95219) +PRISM [arm64-darwin24] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- In Ruby 3.4.2, case-insensitive regex matching (`/i`) worked as expected for single-byte encodings like ISO-8859-x. However, in Ruby 3.5.0dev, characters such as `\u00F3 (��)` and `\u00D3 (��)` are no longer considered equivalent under case-insensitive matching, causing the match to fail. The likely cause is #16145 , which appears to have broken handling of `0x80���0xFF` in single-byte encodings. ## Reproduction ```ruby enc = Encoding::ISO_8859_1 o_acute_lower = "\u00F3".encode(enc) # �� o_acute_upper = "\u00D3".encode(enc) # �� puts /[x#{o_acute_lower}]/i =~ "abc#{o_acute_upper}" ``` - Ruby 3.4.2: outputs 3 (match successful) - Ruby 3.5.0dev: outputs nil (match fails) - ruby 3.5.0dev (2025-02-28T09:32:36Z master db4ea95219) +PRISM [arm64-darwin24] I will submit PR to fix this. https://github.com/ruby/ruby/pull/12889 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/