From 52e721592fc2f9bcb55cfbbd7002ae0ff7003338 Mon Sep 17 00:00:00 2001 From: yugui Date: Mon, 4 May 2009 12:29:55 +0000 Subject: 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 --- ChangeLog | 5 +++++ string.c | 3 ++- test/ruby/test_string.rb | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) 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 + + * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii. + [ruby-core:23158] + Wed Apr 8 17:29:29 2009 NARUSE, Yui * 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! -- cgit v1.2.3