summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-31 13:30:15 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-31 13:30:15 +0000
commit3f59416771559b168e2e5e0cdbcde86d7aea666d (patch)
tree724a0b82ca0e227bd73961d634d297dcd9702d4d
parent4e2989ee8f53d421e9fef21df67420629285b357 (diff)
merge revision(s) 60066: [Backport #13952]
string.c: fix ASCII-only on succ * string.c (str_succ): clear coderange cache when no alpha-numeric character case, carried part may become ASCII-only. [ruby-core:83062] [Bug #13952] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@62139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--string.c1
-rw-r--r--test/ruby/test_string.rb5
-rw-r--r--version.h2
4 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c68abfdc69..e9146be107 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed Jan 31 22:29:57 2018 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ string.c: fix ASCII-only on succ
+
+ * string.c (str_succ): clear coderange cache when no alpha-numeric
+ character case, carried part may become ASCII-only.
+ [ruby-core:83062] [Bug #13952]
+
Wed Jan 31 22:28:20 2018 Nobuyoshi Nakada <nobu@ruby-lang.org>
pack.c: unpack "M" may be ASCII only
diff --git a/string.c b/string.c
index 1512c51a2a..52e3e0b07e 100644
--- a/string.c
+++ b/string.c
@@ -3700,6 +3700,7 @@ str_succ(VALUE str)
}
carry_pos = s - sbeg;
}
+ ENC_CODERANGE_SET(str, ENC_CODERANGE_UNKNOWN);
}
RESIZE_CAPA(str, slen + carry_len);
sbeg = RSTRING_PTR(str);
diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb
index 61a69b1c7b..a0584e26bf 100644
--- a/test/ruby/test_string.rb
+++ b/test/ruby/test_string.rb
@@ -1540,6 +1540,11 @@ class TestString < Test::Unit::TestCase
assert_equal("2000aaa", "1999zzz".succ)
assert_equal("AAAA0000", "ZZZ9999".succ)
assert_equal("**+", "***".succ)
+
+ bug = '[ruby-core:83062] [Bug #13952]'
+ s = "\xff".b
+ assert_not_predicate(s, :ascii_only?)
+ assert_predicate(s.succ, :ascii_only?, bug)
end
def test_succ!
diff --git a/version.h b/version.h
index f65d90b6e3..fbe3e26a02 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.3.7"
#define RUBY_RELEASE_DATE "2018-01-31"
-#define RUBY_PATCHLEVEL 400
+#define RUBY_PATCHLEVEL 401
#define RUBY_RELEASE_YEAR 2018
#define RUBY_RELEASE_MONTH 1