summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-18 15:49:29 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-18 15:49:29 +0000
commit478cdf49d7fcca58de301637dba598d2da69ef3e (patch)
treee6059d88ca13119d3a6704c56735714503f33c84
parentbd210ff16425ab92aef0ca4ac5a28061fac7c154 (diff)
merge revision(s) 52016,52017,52019,52020,52021: [Backport #10735]
* enc/euc_jp.c (mbc_case_fold): check given string is valid or not, and if invalid, return 1. [Bug #11486] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@52652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--enc/euc_jp.c2
-rw-r--r--test/ruby/test_m17n_comb.rb5
-rw-r--r--version.h2
4 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6e82651ee3..676453311e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Nov 19 00:41:09 2015 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/euc_jp.c (mbc_case_fold): check given string is valid or not,
+ and if invalid, return 1. [Bug #11486]
+
Thu Nov 19 00:15:23 2015 Zachary Scott <zzak@ruby-lang.org>
* ext/openssl/ossl_pkey.c: Merge ruby/openssl@b9ea8ef [Bug #10735]
diff --git a/enc/euc_jp.c b/enc/euc_jp.c
index 61bb8ba65a..e4d3b70167 100644
--- a/enc/euc_jp.c
+++ b/enc/euc_jp.c
@@ -381,8 +381,10 @@ mbc_case_fold(OnigCaseFoldType flag,
OnigCodePoint code;
int len;
+ len = mbc_enc_len(p, end, enc);
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 3a37ed4a23..83c3f8aa95 100644
--- a/test/ruby/test_m17n_comb.rb
+++ b/test/ruby/test_m17n_comb.rb
@@ -1635,4 +1635,9 @@ class TestM17NComb < Test::Unit::TestCase
}
end
+ def test_bug11486
+ bug11486 = '[Bug #11486]'
+ 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
diff --git a/version.h b/version.h
index bec24f7c67..8b9a9646fa 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.4"
#define RUBY_RELEASE_DATE "2015-11-19"
-#define RUBY_PATCHLEVEL 190
+#define RUBY_PATCHLEVEL 191
#define RUBY_RELEASE_YEAR 2015
#define RUBY_RELEASE_MONTH 11