Skip to content

Commit ef7fdbd

Browse files
committed
* array.c (rb_ary_equal, rb_ary_eql, rb_ary_hash, rb_ary_cmp):
Make Array#eql?, #hash, #== and #<=> use rb_protect_inspect() and handle recursive data properly. [ruby-dev:35181] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@17444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent f5dd2cf commit ef7fdbd

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

ChangeLog

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
Thu Jun 19 23:57:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
1+
Fri Jun 20 01:40:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
22

33
* array.c (rb_ary_equal, rb_ary_eql, rb_ary_hash, rb_ary_cmp):
4-
Make Array#eql?, #hash, #== and #<=> use rb_exec_recursive() and
4+
Make Array#eql?, #hash, #== and #<=> use rb_protect_inspect() and
55
handle recursive data properly. [ruby-dev:35181]
66

77
Wed Jun 18 15:20:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>

array.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2468,7 +2468,6 @@ recursive_equal(ary1, ary2)
24682468
{
24692469
long i;
24702470

2471-
if (rb_inspecting_p(ary1)) return Qfalse;
24722471
for (i=0; i<RARRAY(ary1)->len; i++) {
24732472
if (!rb_equal(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
24742473
return Qfalse;
@@ -2502,6 +2501,7 @@ rb_ary_equal(ary1, ary2)
25022501
return rb_equal(ary2, ary1);
25032502
}
25042503
if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
2504+
if (rb_inspecting_p(ary1)) return Qfalse;
25052505
return rb_protect_inspect(recursive_equal, ary1, ary2);
25062506
}
25072507

@@ -2511,7 +2511,6 @@ recursive_eql(ary1, ary2)
25112511
{
25122512
long i;
25132513

2514-
if (rb_inspecting_p(ary1)) return Qfalse;
25152514
for (i=0; i<RARRAY(ary1)->len; i++) {
25162515
if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
25172516
return Qfalse;
@@ -2534,6 +2533,7 @@ rb_ary_eql(ary1, ary2)
25342533
if (ary1 == ary2) return Qtrue;
25352534
if (TYPE(ary2) != T_ARRAY) return Qfalse;
25362535
if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
2536+
if (rb_inspecting_p(ary1)) return Qfalse;
25372537
return rb_protect_inspect(recursive_eql, ary1, ary2);
25382538
}
25392539

@@ -2546,9 +2546,6 @@ recursive_hash(ary)
25462546
long i, h;
25472547
VALUE n;
25482548

2549-
if (rb_inspecting_p(ary)) {
2550-
return LONG2FIX(0);
2551-
}
25522549
h = RARRAY(ary)->len;
25532550
for (i=0; i<RARRAY(ary)->len; i++) {
25542551
h = (h << 1) | (h<0 ? 1 : 0);
@@ -2570,6 +2567,9 @@ static VALUE
25702567
rb_ary_hash(ary)
25712568
VALUE ary;
25722569
{
2570+
if (rb_inspecting_p(ary)) {
2571+
return LONG2FIX(0);
2572+
}
25732573
return rb_protect_inspect(recursive_hash, ary, 0);
25742574
}
25752575

@@ -2607,7 +2607,6 @@ recursive_cmp(ary1, ary2)
26072607
{
26082608
long i, len;
26092609

2610-
if (rb_inspecting_p(ary1)) return Qfalse;
26112610
len = RARRAY(ary1)->len;
26122611
if (len > RARRAY(ary2)->len) {
26132612
len = RARRAY(ary2)->len;
@@ -2650,6 +2649,7 @@ rb_ary_cmp(ary1, ary2)
26502649

26512650
ary2 = to_ary(ary2);
26522651
if (ary1 == ary2) return INT2FIX(0);
2652+
if (rb_inspecting_p(ary1)) return INT2FIX(0);
26532653
v = rb_protect_inspect(recursive_cmp, ary1, ary2);
26542654
if (v != Qundef) return v;
26552655
len = RARRAY(ary1)->len - RARRAY(ary2)->len;

version.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#define RUBY_VERSION "1.8.6"
2-
#define RUBY_RELEASE_DATE "2008-06-19"
2+
#define RUBY_RELEASE_DATE "2008-06-20"
33
#define RUBY_VERSION_CODE 186
4-
#define RUBY_RELEASE_CODE 20080619
5-
#define RUBY_PATCHLEVEL 226
4+
#define RUBY_RELEASE_CODE 20080620
5+
#define RUBY_PATCHLEVEL 227
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8
99
#define RUBY_VERSION_TEENY 6
1010
#define RUBY_RELEASE_YEAR 2008
1111
#define RUBY_RELEASE_MONTH 6
12-
#define RUBY_RELEASE_DAY 19
12+
#define RUBY_RELEASE_DAY 20
1313

1414
#ifdef RUBY_EXTERN
1515
RUBY_EXTERN const char ruby_version[];

0 commit comments

Comments
 (0)