diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index f008bc82a4add1..25af87b610ef83 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -1297,7 +1297,7 @@ class C s = 'str' trap(:INT){p s} }.join - rescue => Ractor::RemoteError + rescue Ractor::RemoteError a << :ok end } diff --git a/lib/unicode_normalize/normalize.rb b/lib/unicode_normalize/normalize.rb index 7872f8a0bcffdd..611f43ef2aa0ad 100644 --- a/lib/unicode_normalize/normalize.rb +++ b/lib/unicode_normalize/normalize.rb @@ -111,17 +111,22 @@ def self.nfc_one(string) start = nfd_string[0] last_class = CLASS_TABLE[start]-1 accents = '' + result = '' nfd_string[1..-1].each_char do |accent| accent_class = CLASS_TABLE[accent] if last_class1 # TODO: change from recursion to loop - hangul_comp_one(start+accents) + hangul_comp_one(result+start+accents) end def self.normalize(string, form = :nfc) diff --git a/test/test_unicode_normalize.rb b/test/test_unicode_normalize.rb index 98f46551d33374..dd06d271310ad9 100644 --- a/test/test_unicode_normalize.rb +++ b/test/test_unicode_normalize.rb @@ -210,6 +210,15 @@ def test_us_ascii assert_equal true, ascii_string.unicode_normalized?(:nfkd) end + def test_bug_21559 + str = "s\u{1611e}\u{323}\u{1611e}\u{307}\u{1611f}" + assert_equal str.unicode_normalize(:nfd), str.unicode_normalize(:nfc).unicode_normalize(:nfd) + end + + def test_gurung_khema + assert_equal "\u{16121 16121 16121 16121 16121 1611E}", "\u{1611E 16121 16121 16121 16121 16121}".unicode_normalize + end + def test_canonical_ordering a = "\u03B1\u0313\u0300\u0345" a_unordered1 = "\u03B1\u0345\u0313\u0300"