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

ruby-changes:9187

From: matz <ko1@a...>
Date: Sat, 13 Dec 2008 19:35:21 +0900 (JST)
Subject: [ruby-changes:9187] Ruby:r20724 (trunk): * string.c (sym_printable): wrong condition for string iteration.

matz	2008-12-13 19:35:06 +0900 (Sat, 13 Dec 2008)

  New Revision: 20724

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20724

  Log:
    * string.c (sym_printable): wrong condition for string iteration.

  Modified files:
    trunk/ChangeLog
    trunk/string.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 20723)
+++ ChangeLog	(revision 20724)
@@ -1,3 +1,7 @@
+Sat Dec 13 18:34:43 2008  Yukihiro Matsumoto  <matz@r...>
+
+	* string.c (sym_printable): wrong condition for string iteration.
+
 Sat Dec 13 16:04:48 2008  Yuki Sonoda (Yugui)  <yugui@y...>
 
 	* encoding.c (default_external): endless recursion during
Index: string.c
===================================================================
--- string.c	(revision 20723)
+++ string.c	(revision 20724)
@@ -6827,10 +6827,9 @@
 
 
 static int
-sym_printable(const char *s, rb_encoding *enc)
+sym_printable(const char *s, const char *send, rb_encoding *enc)
 {
-    const char *send = s + strlen(s);
-    while (s) {
+    while (s < send) {
 	int c = rb_enc_codepoint(s, send, enc);
 	int n = rb_enc_codelen(c, enc);
 	if (!rb_enc_isprint(c, enc)) return Qfalse;
@@ -6862,7 +6861,7 @@
     memcpy(RSTRING_PTR(str)+1, RSTRING_PTR(sym), RSTRING_LEN(sym));
     if (RSTRING_LEN(sym) != strlen(RSTRING_PTR(sym)) ||
 	!rb_enc_symname_p(RSTRING_PTR(sym), enc) ||
-	!sym_printable(RSTRING_PTR(sym), enc)) {
+	!sym_printable(RSTRING_PTR(sym), RSTRING_END(sym), enc)) {
 	str = rb_str_inspect(str);
 	strncpy(RSTRING_PTR(str), ":\"", 2);
     }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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