summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enc/euc_jp.c7
-rw-r--r--test/ruby/test_m17n_comb.rb3
2 files changed, 6 insertions, 4 deletions
diff --git a/enc/euc_jp.c b/enc/euc_jp.c
index 4121750b8d..7922aac150 100644
--- a/enc/euc_jp.c
+++ b/enc/euc_jp.c
@@ -378,12 +378,13 @@ mbc_case_fold(OnigCaseFoldType flag,
return 1;
}
else {
+ OnigCodePoint code;
int len;
len = mbc_enc_len(p, end, enc);
- if (len <= 0) return 1;
- get_lower_case(mbc_to_code(p, end, enc));
- /* assuming case folding in euc-jp doesn't change length */
+ code = get_lower_case(mbc_to_code(p, end, enc));
+ len = code_to_mbc(code, lower, enc);
+ if (len == ONIGERR_INVALID_CODE_POINT_VALUE) len = 1;
(*pp) += len;
return len; /* return byte length of converted char to lower */
}
diff --git a/test/ruby/test_m17n_comb.rb b/test/ruby/test_m17n_comb.rb
index c69133dd4d..83c3f8aa95 100644
--- a/test/ruby/test_m17n_comb.rb
+++ b/test/ruby/test_m17n_comb.rb
@@ -1637,6 +1637,7 @@ class TestM17NComb < Test::Unit::TestCase
def test_bug11486
bug11486 = '[Bug #11486]'
- assert_nil ("\u3042"*19+"\r"*19+"\u3042"*20+"\r"*20).encode("euc-jp").gsub!(/xxx/i, ""), bug11486
+ assert_nil ("\u3042"*19+"\r"*19+"\u3042"*20+"\r"*20).encode(Encoding::EUC_JP).gsub!(/xxx/i, ""), bug11486
+ assert_match Regexp.new("ABC\uff41".encode(Encoding::EUC_JP), Regexp::IGNORECASE), "abc\uFF21".encode(Encoding::EUC_JP), bug11486
end
end