summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--encoding.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cf147b8e07..28c8c73f22 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Dec 9 03:29:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): return 1 if underlying implementation
+ returns a length longer than e-p.
+
Sat Dec 8 17:59:40 2007 Tanaka Akira <akr@fsij.org>
* signal.c (posix_signal): return value.
diff --git a/encoding.c b/encoding.c
index 540aa88701..e902f6db0e 100644
--- a/encoding.c
+++ b/encoding.c
@@ -486,7 +486,8 @@ int
rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc)
{
int n = ONIGENC_PRECISE_MBC_ENC_LEN(enc, (UChar*)p, (UChar*)e);
- if (MBCLEN_CHARFOUND(n))
+ n = MBCLEN_CHARFOUND(n);
+ if (0 < n && n <= e-p)
return n;
else
return 1;