summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--array.c1
-rw-r--r--bignum.c2
-rw-r--r--numeric.c6
-rw-r--r--string.c1
-rw-r--r--struct.c1
6 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 8b5d55500f..587bd28387 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Aug 24 15:17:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): check identiry equality first.
+
+ * string.c (rb_str_equal): ditto.
+
+ * struct.c (rb_struct_equal): ditto.
+
Fri Aug 24 14:45:26 2001 Usaku Nakamura <usa@ruby-lang.org>
* dln.c (dln_strerror): fix a bug that sometimes made null message on
@@ -5,6 +13,10 @@ Fri Aug 24 14:45:26 2001 Usaku Nakamura <usa@ruby-lang.org>
* win32/win32.c (mystrerror): ditto.
+Fri Aug 24 03:15:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): undef Integer::new.
+
Thu Aug 23 10:10:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (is_defined): should not dump core for "defined?(())".
diff --git a/array.c b/array.c
index 3966890ac4..724cdbb66b 100644
--- a/array.c
+++ b/array.c
@@ -1341,6 +1341,7 @@ rb_ary_equal(ary1, ary2)
{
long i;
+ if (ary1 == ary2) return Qtrue;
if (TYPE(ary2) != T_ARRAY) return Qfalse;
if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
for (i=0; i<RARRAY(ary1)->len; i++) {
diff --git a/bignum.c b/bignum.c
index 226fe49e67..754ddce25a 100644
--- a/bignum.c
+++ b/bignum.c
@@ -1418,8 +1418,6 @@ Init_Bignum()
{
rb_cBignum = rb_define_class("Bignum", rb_cInteger);
- rb_undef_method(CLASS_OF(rb_cBignum), "new");
-
rb_define_method(rb_cBignum, "to_s", rb_big_to_s, 0);
rb_define_method(rb_cBignum, "coerce", rb_big_coerce, 1);
rb_define_method(rb_cBignum, "-@", rb_big_uminus, 0);
diff --git a/numeric.c b/numeric.c
index 40e607b222..a60cb6c364 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1125,7 +1125,7 @@ fix_equal(x, y)
VALUE x, y;
{
if (FIXNUM_P(y)) {
- return (FIX2LONG(x) == FIX2LONG(y))?Qtrue:Qfalse;
+ return (x == y)?Qtrue:Qfalse;
}
else {
return num_equal(x, y);
@@ -1556,6 +1556,8 @@ Init_Numeric()
rb_define_method(rb_cNumeric, "truncate", num_truncate, 0);
rb_cInteger = rb_define_class("Integer", rb_cNumeric);
+ rb_undef_method(CLASS_OF(rb_cInteger), "new");
+
rb_define_method(rb_cInteger, "integer?", int_int_p, 0);
rb_define_method(rb_cInteger, "upto", int_upto, 1);
rb_define_method(rb_cInteger, "downto", int_downto, 1);
@@ -1577,8 +1579,6 @@ Init_Numeric()
rb_define_singleton_method(rb_cFixnum, "induced_from", rb_fix_induced_from, 1);
rb_define_singleton_method(rb_cInteger, "induced_from", rb_int_induced_from, 1);
- rb_undef_method(CLASS_OF(rb_cFixnum), "new");
-
rb_define_method(rb_cFixnum, "to_s", fix_to_s, 0);
rb_define_method(rb_cFixnum, "type", fix_type, 0);
diff --git a/string.c b/string.c
index 42a1f3b79f..da00bb4bf3 100644
--- a/string.c
+++ b/string.c
@@ -565,6 +565,7 @@ static VALUE
rb_str_equal(str1, str2)
VALUE str1, str2;
{
+ if (str1 == str2) return Qtrue;
if (TYPE(str2) != T_STRING)
return Qfalse;
diff --git a/struct.c b/struct.c
index ecd9cf46dd..a50c395514 100644
--- a/struct.c
+++ b/struct.c
@@ -525,6 +525,7 @@ rb_struct_equal(s, s2)
{
long i;
+ if (s == s2) return Qtrue;
if (TYPE(s2) != T_STRUCT) return Qfalse;
if (CLASS_OF(s) != CLASS_OF(s2)) return Qfalse;
if (RSTRUCT(s)->len != RSTRUCT(s2)->len) {