summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-10-06 02:45:15 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-10-06 02:45:15 +0000
commit6536fb84b35a5ef03fcc0b22cd34f1122d53d976 (patch)
treef6dc9277400077a0cc7c102fef65e72d11153938 /string.c
parent9d04ee7eddb098f0450f3e6b1c1ab5f6e81b3c48 (diff)
1.1c6
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/string.c b/string.c
index b5a387e88b..0c9f5fb23a 100644
--- a/string.c
+++ b/string.c
@@ -2408,8 +2408,11 @@ scan_once(str, pat, start)
if (reg_search(pat, str, *start, 0) >= 0) {
match = backref_get();
regs = RMATCH(match)->regs;
- if (END(0) == *start) {
- *start = END(0)+1;
+ if (BEG(0) == END(0)) {
+ /*
+ * Always consume at least one character of the input string
+ */
+ *start = END(0)+(ismbchar(RSTRING(str)->ptr[END(0)])?2:1);
}
else {
*start = END(0);