summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-04 12:29:55 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-04 12:29:55 +0000
commit52e721592fc2f9bcb55cfbbd7002ae0ff7003338 (patch)
treeeb5c71e80459b661c07af6abea596ee21279535c
parent1de888d40788392886e8eeec0814db93b5fd8085 (diff)
merges r23159 from trunk into ruby_1_9_1.
-- * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii. [ruby-core:23158] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@23333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--string.c3
-rw-r--r--test/ruby/test_string.rb2
3 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f458a927bb..4e052abad7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Apr 8 20:08:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii.
+ [ruby-core:23158]
+
Wed Apr 8 17:29:29 2009 NARUSE, Yui <naruse@ruby-lang.org>
* string.c (rb_str_chop_bang): reset coderange. [ruby-core:23155]
diff --git a/string.c b/string.c
index 8c919ec100..1603354391 100644
--- a/string.c
+++ b/string.c
@@ -6070,7 +6070,8 @@ rb_str_rstrip_bang(VALUE str)
/* remove trailing spaces or '\0's */
if (single_byte_optimizable(str)) {
- while (s < t && (*(t-1) == '\0' || rb_enc_isspace(*(t-1), enc))) t--;
+ unsigned char c;
+ while (s < t && ((c = *(t-1)) == '\0' || rb_enc_isspace(c, enc))) t--;
}
else {
char *tp;
diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb
index 7fa2ead9b6..f6f3dd76b2 100644
--- a/test/ruby/test_string.rb
+++ b/test/ruby/test_string.rb
@@ -1139,6 +1139,8 @@ class TestString < Test::Unit::TestCase
def test_strip
assert_equal(S("x"), S(" x ").strip)
assert_equal(S("x"), S(" \n\r\t x \t\r\n\n ").strip)
+ assert_equal(S(""), S("\xa0".force_encoding("iso-8859-1")).strip)
+ assert_equal(S("a"), S("a\xa0".force_encoding("iso-8859-1")).strip)
end
def test_strip!