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

ruby-changes:8032

From: mame <ko1@a...>
Date: Fri, 26 Sep 2008 00:42:48 +0900 (JST)
Subject: [ruby-changes:8032] Ruby:r19557 (trunk): * range.c (range_inspect): fix SEGV for cyclic range object.

mame	2008-09-26 00:42:23 +0900 (Fri, 26 Sep 2008)

  New Revision: 19557

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

  Log:
    * range.c (range_inspect): fix SEGV for cyclic range object.
      [ruby-core:18835]

  Modified files:
    trunk/ChangeLog
    trunk/range.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19556)
+++ ChangeLog	(revision 19557)
@@ -1,3 +1,8 @@
+Fri Sep 26 00:40:30 2008  Yusuke Endoh  <mame@t...>
+
+	* range.c (range_inspect): fix SEGV for cyclic range object.
+	  [ruby-core:18835]
+
 Thu Sep 25 23:59:56 2008  Tanaka Akira  <akr@f...>
 
 	* common.mk: dependency updated.
Index: range.c
===================================================================
--- range.c	(revision 19556)
+++ range.c	(revision 19557)
@@ -663,6 +663,24 @@
     return str;
 }
 
+static VALUE
+inspect_range(VALUE range, VALUE dummy, int recur)
+{
+    VALUE str, str2;
+
+    if (recur) {
+	return rb_str_new2(EXCL(range) ? "(... ... ...)" : "(... .. ...)");
+    }
+    str = rb_inspect(RANGE_BEG(range));
+    str2 = rb_inspect(RANGE_END(range));
+    str = rb_str_dup(str);
+    rb_str_cat(str, "...", EXCL(range) ? 3 : 2);
+    rb_str_append(str, str2);
+    OBJ_INFECT(str, str2);
+
+    return str;
+}
+
 /*
  * call-seq:
  *   rng.inspect  => string
@@ -676,16 +694,7 @@
 static VALUE
 range_inspect(VALUE range)
 {
-    VALUE str, str2;
-
-    str = rb_inspect(RANGE_BEG(range));
-    str2 = rb_inspect(RANGE_END(range));
-    str = rb_str_dup(str);
-    rb_str_cat(str, "...", EXCL(range) ? 3 : 2);
-    rb_str_append(str, str2);
-    OBJ_INFECT(str, str2);
-
-    return str;
+    return rb_exec_recursive(inspect_range, range, 0);
 }
 
 /*

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

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