summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-24 04:59:31 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-24 04:59:31 +0000
commit4b8e14c978bf1300b6528430c28aab21865a21f4 (patch)
tree08f8f9fff8e864a45db15536fae5d75f753acdc1 /string.c
parentcb9da52cdedfd71d326ac83f72bd553373c7f815 (diff)
* string.c (rb_enc_strlen_cr): increment by rb_enc_mbminlen(enc) for
broken byte sequence. [ruby-core:27748] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/string.c b/string.c
index 0bd1ca80cc..6addc621ee 100644
--- a/string.c
+++ b/string.c
@@ -1008,7 +1008,10 @@ rb_enc_strlen_cr(const char *p, const char *e, rb_encoding *enc, int *cr)
}
else {
*cr = ENC_CODERANGE_BROKEN;
- p++;
+ if (p + rb_enc_mbminlen(enc) <= e)
+ p += rb_enc_mbminlen(enc);
+ else
+ p = e;
}
}
if (!*cr) *cr = ENC_CODERANGE_7BIT;