[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]