summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-21 04:03:19 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-21 04:03:19 +0000
commit9a8e84e9b4e736f4bf66d4a4845ff100a6cb5f22 (patch)
tree28ec382fd1164b8e6fd39763316fb3520792c9e0
parente143a360f828d33fd67c74f4caadc38d3ce55e55 (diff)
downloadruby-9a8e84e9b4e736f4bf66d4a4845ff100a6cb5f22.tar.gz
ruby-9a8e84e9b4e736f4bf66d4a4845ff100a6cb5f22.tar.xz
ruby-9a8e84e9b4e736f4bf66d4a4845ff100a6cb5f22.zip
* string.c (rb_str_chomp_bang): avoid unnecessary loop using
rb_enc_prev_char(). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--string.c8
2 files changed, 7 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 171811551..9ee92d56f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,11 @@ Fri Dec 21 12:55:39 2007 Tanaka Akira <akr@fsij.org>
* lib/runit, lib/rubyunit.rb, test/testunit/runit: removed.
+Fri Dec 21 12:45:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): avoid unnecessary loop using
+ rb_enc_prev_char().
+
Fri Dec 21 12:32:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* file.c (Init_File): File.exists? revived.
diff --git a/string.c b/string.c
index 6e998ee17..4079a8cf4 100644
--- a/string.c
+++ b/string.c
@@ -4538,12 +4538,8 @@ rb_str_chomp_bang(int argc, VALUE *argv, VALUE str)
if (p[len-1] == newline &&
(rslen <= 1 ||
memcmp(RSTRING_PTR(rs), pp, rslen) == 0)) {
- if (rb_enc_mbmaxlen(enc) > 1) {
- while (p < pp) {
- p += rb_enc_mbclen(p, e, enc);
- }
- if (p != pp) return Qnil;
- }
+ if (ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,p,pp) != (const UChar*)pp)
+ return Qnil;
rb_str_modify(str);
STR_SET_LEN(str, RSTRING_LEN(str) - rslen);
RSTRING_PTR(str)[RSTRING_LEN(str)] = '\0';