Skip to content

Commit 5f61a11

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_5@17444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 4f029e3 commit 5f61a11

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:17:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>

array.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2460,7 +2460,6 @@ recursive_equal(ary1, ary2)
24602460
{
24612461
long i;
24622462

2463-
if (rb_inspecting_p(ary1)) return Qfalse;
24642463
for (i=0; i<RARRAY(ary1)->len; i++) {
24652464
if (!rb_equal(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
24662465
return Qfalse;
@@ -2494,6 +2493,7 @@ rb_ary_equal(ary1, ary2)
24942493
return rb_equal(ary2, ary1);
24952494
}
24962495
if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
2496+
if (rb_inspecting_p(ary1)) return Qfalse;
24972497
return rb_protect_inspect(recursive_equal, ary1, ary2);
24982498
}
24992499

@@ -2503,7 +2503,6 @@ recursive_eql(ary1, ary2)
25032503
{
25042504
long i;
25052505

2506-
if (rb_inspecting_p(ary1)) return Qfalse;
25072506
for (i=0; i<RARRAY(ary1)->len; i++) {
25082507
if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
25092508
return Qfalse;
@@ -2526,6 +2525,7 @@ rb_ary_eql(ary1, ary2)
25262525
if (ary1 == ary2) return Qtrue;
25272526
if (TYPE(ary2) != T_ARRAY) return Qfalse;
25282527
if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
2528+
if (rb_inspecting_p(ary1)) return Qfalse;
25292529
return rb_protect_inspect(recursive_eql, ary1, ary2);
25302530
}
25312531

@@ -2538,9 +2538,6 @@ recursive_hash(ary)
25382538
long i, h;
25392539
VALUE n;
25402540

2541-
if (rb_inspecting_p(ary)) {
2542-
return LONG2FIX(0);
2543-
}
25442541
h = RARRAY(ary)->len;
25452542
for (i=0; i<RARRAY(ary)->len; i++) {
25462543
h = (h << 1) | (h<0 ? 1 : 0);
@@ -2562,6 +2559,9 @@ static VALUE
25622559
rb_ary_hash(ary)
25632560
VALUE ary;
25642561
{
2562+
if (rb_inspecting_p(ary)) {
2563+
return LONG2FIX(0);
2564+
}
25652565
return rb_protect_inspect(recursive_hash, ary, 0);
25662566
}
25672567

@@ -2599,7 +2599,6 @@ recursive_cmp(ary1, ary2)
25992599
{
26002600
long i, len;
26012601

2602-
if (rb_inspecting_p(ary1)) return Qfalse;
26032602
len = RARRAY(ary1)->len;
26042603
if (len > RARRAY(ary2)->len) {
26052604
len = RARRAY(ary2)->len;
@@ -2642,6 +2641,7 @@ rb_ary_cmp(ary1, ary2)
26422641

26432642
ary2 = to_ary(ary2);
26442643
if (ary1 == ary2) return INT2FIX(0);
2644+
if (rb_inspecting_p(ary1)) return INT2FIX(0);
26452645
v = rb_protect_inspect(recursive_cmp, ary1, ary2);
26462646
if (v != Qundef) return v;
26472647
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.5"
2-
#define RUBY_RELEASE_DATE "2008-06-19"
2+
#define RUBY_RELEASE_DATE "2008-06-20"
33
#define RUBY_VERSION_CODE 185
4-
#define RUBY_RELEASE_CODE 20080619
5-
#define RUBY_PATCHLEVEL 227
4+
#define RUBY_RELEASE_CODE 20080620
5+
#define RUBY_PATCHLEVEL 228
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8
99
#define RUBY_VERSION_TEENY 5
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy