From cde5b2a9cf6934bd5fe006be31d6a09901609c13 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 8 Dec 2007 18:41:47 +0000 Subject: [PATCH] * encoding.c (rb_enc_mbclen): return 1 if underlying implementation returns a length longer than e-p. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ encoding.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) 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 + + * 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 * 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;