summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
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;