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/