summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-09-24 06:28:35 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-09-24 06:28:35 +0000
commit955507313be5003ae132bd92344569da9e7218da (patch)
tree814368b11695f2e3b1b0ac76f88fa1b0d3d6b806 /string.c
parentaa836e539f154e49587e48791d44f829d239766b (diff)
* string.c (rb_str_rindex): use rb_enc_prev_char instead of repeated str_nth.
patched by Michael Selig [ruby-core:32498] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/string.c b/string.c
index 4ae149f0c4..c07ddc9438 100644
--- a/string.c
+++ b/string.c
@@ -2488,14 +2488,14 @@ rb_str_rindex(VALUE str, VALUE sub, long pos)
e = RSTRING_END(str);
t = RSTRING_PTR(sub);
slen = RSTRING_LEN(sub);
- for (;;) {
- s = str_nth(sbeg, e, pos, enc, singlebyte);
- if (!s) return -1;
+ s = str_nth(sbeg, e, pos, enc, singlebyte);
+ while (s) {
if (memcmp(s, t, slen) == 0) {
return pos;
}
if (pos == 0) break;
pos--;
+ s = rb_enc_prev_char(sbeg, s, e, enc);
}
return -1;
}