ruby-changes:11529
From: nobu <ko1@a...>
Date: Wed, 8 Apr 2009 20:11:07 +0900 (JST)
Subject: [ruby-changes:11529] Ruby:r23159 (trunk): * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii.
nobu 2009-04-08 20:08:18 +0900 (Wed, 08 Apr 2009) New Revision: 23159 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23159 Log: * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii. [ruby-core:23158] Modified files: trunk/ChangeLog trunk/string.c trunk/test/ruby/test_string.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 23158) +++ ChangeLog (revision 23159) @@ -1,3 +1,8 @@ +Wed Apr 8 20:08:16 2009 Nobuyoshi Nakada <nobu@r...> + + * 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@r...> * string.c (rb_str_chop_bang): reset coderange. [ruby-core:23155] Index: string.c =================================================================== --- string.c (revision 23158) +++ string.c (revision 23159) @@ -6197,7 +6197,8 @@ /* 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; Index: test/ruby/test_string.rb =================================================================== --- test/ruby/test_string.rb (revision 23158) +++ test/ruby/test_string.rb (revision 23159) @@ -1139,6 +1139,8 @@ 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! -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/