ruby-changes:14554
From: akr <ko1@a...>
Date: Sun, 24 Jan 2010 14:23:09 +0900 (JST)
Subject: [ruby-changes:14554] Ruby:r26393 (trunk): * string.c (rb_str_inspect): increment by rb_enc_mbminlen(enc) for
akr 2010-01-24 14:22:51 +0900 (Sun, 24 Jan 2010) New Revision: 26393 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26393 Log: * string.c (rb_str_inspect): increment by rb_enc_mbminlen(enc) for broken byte sequence. [ruby-core:27748] Modified files: trunk/ChangeLog trunk/string.c Index: ChangeLog =================================================================== --- ChangeLog (revision 26392) +++ ChangeLog (revision 26393) @@ -1,7 +1,8 @@ -Sun Jan 24 13:55:54 2010 Tanaka Akira <akr@f...> +Sun Jan 24 14:21:48 2010 Tanaka Akira <akr@f...> * string.c (rb_enc_strlen_cr): increment by rb_enc_mbminlen(enc) for broken byte sequence. [ruby-core:27748] + (rb_str_inspect): ditto. Sun Jan 24 05:18:34 2010 Nobuyoshi Nakada <nobu@r...> Index: string.c =================================================================== --- string.c (revision 26392) +++ string.c (revision 26393) @@ -4099,9 +4099,14 @@ n = rb_enc_precise_mbclen(p, pend, enc); if (!MBCLEN_CHARFOUND_P(n)) { if (p > prev) str_buf_cat(result, prev, p - prev); - snprintf(buf, CHAR_ESC_LEN, "\\x%02X", *p & 0377); - str_buf_cat(result, buf, strlen(buf)); - prev = ++p; + n = rb_enc_mbminlen(enc); + if (pend < p + n) + n = pend - p; + while (n--) { + snprintf(buf, CHAR_ESC_LEN, "\\x%02X", *p & 0377); + str_buf_cat(result, buf, strlen(buf)); + prev = ++p; + } continue; } n = MBCLEN_CHARFOUND_LEN(n); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/