[Cleanup] Int vs Long (2nd part)

From: Michal Rokos <m.rokos@...>
Date: 2002-08-22 13:36:52 UTC
List: ruby-core #337
Hi,

	I just noticed that I forgot to change 1 int to long in
	array.c:1627.

	Sorry.
	
		Michal

(Or consider to use this:

Index: array.c
===================================================================
RCS file: /src/ruby/array.c,v
retrieving revision 1.90
diff -u -r1.90 array.c
--- array.c	2002/08/21 15:47:54	1.90
+++ array.c	2002/08/22 12:52:01
@@ -1448,8 +1448,7 @@
 
 static VALUE
 rb_ary_times(ary, times)
-    VALUE ary;
-    VALUE times;
+    VALUE ary, times;
 {
     VALUE ary2;
     long i, len;
@@ -1464,12 +1463,12 @@
     }
     len *= RARRAY(ary)->len;
 
-    ary2 = ary_new(rb_obj_class(ary), len);
-    RARRAY(ary2)->len = len;
+    ary2 = rb_ary_new2(len);
 
     for (i=0; i<len; i+=RARRAY(ary)->len) {
 	MEMCPY(RARRAY(ary2)->ptr+i, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
     }
+    RARRAY(ary2)->len = len;
     OBJ_INFECT(ary2, ary);
 
     return ary2;
@@ -1496,8 +1495,7 @@
 
 VALUE
 rb_ary_rassoc(ary, value)
-    VALUE ary;
-    VALUE value;
+    VALUE ary, value;
 {
     VALUE *p, *pend;
 
@@ -1549,9 +1547,8 @@
 rb_ary_hash(ary)
     VALUE ary;
 {
-    long i;
+    long i, h;
     VALUE n;
-    long h;
 
     h = RARRAY(ary)->len;
     for (i=0; i<RARRAY(ary)->len; i++) {
@@ -1568,6 +1565,7 @@
     VALUE item;
 {
     long i;
+    
     for (i=0; i<RARRAY(ary)->len; i++) {
 	if (rb_equal(RARRAY(ary)->ptr[i], item)) {
 	    return Qtrue;
@@ -1577,26 +1575,23 @@
 }
 
 VALUE
-rb_ary_cmp(ary, ary2)
-    VALUE ary;
-    VALUE ary2;
+rb_ary_cmp(ary1, ary2)
+    VALUE ary1, ary2;
 {
     long i, len;
 
-    if (TYPE(ary2) != T_ARRAY) {
-	ary2 = to_ary(ary2);
-    }
-    len = RARRAY(ary)->len;
+    ary2 = to_ary(ary2);
+    len = RARRAY(ary1)->len;
     if (len > RARRAY(ary2)->len) {
 	len = RARRAY(ary2)->len;
     }
     for (i=0; i<len; i++) {
-	VALUE v = rb_funcall(RARRAY(ary)->ptr[i],id_cmp,1,RARRAY(ary2)->ptr[i]);
+	VALUE v = rb_funcall(RARRAY(ary1)->ptr[i], id_cmp, 1, RARRAY(ary2)->ptr[i]);
 	if (v != INT2FIX(0)) {
 	    return v;
 	}
     }
-    len = RARRAY(ary)->len - RARRAY(ary2)->len;
+    len = RARRAY(ary1)->len - RARRAY(ary2)->len;
     if (len == 0) return INT2FIX(0);
     if (len > 0) return INT2FIX(1);
     return INT2FIX(-1);
@@ -1624,7 +1619,7 @@
     VALUE ary1, ary2;
 {
     VALUE hash = rb_hash_new();
-    int i;
+    long i;
 
     for (i=0; i<RARRAY(ary1)->len; i++) {
 	rb_hash_aset(hash, RARRAY(ary1)->ptr[i], Qtrue);
@@ -1641,11 +1636,12 @@
 rb_ary_and(ary1, ary2)
     VALUE ary1, ary2;
 {
-    VALUE hash;
-    VALUE ary3 = rb_ary_new();
+    VALUE hash, ary3;
     long i;
 
     ary2 = to_ary(ary2);
+    ary3 = rb_ary_new(RARRAY(ary1)->len < RARRAY(ary2)->len ?
+	    RARRAY(ary1)->len : RARRAY(ary2)->len);
     hash = ary_make_hash(ary2, 0);
 
     for (i=0; i<RARRAY(ary1)->len; i++) {
@@ -1662,12 +1658,12 @@
 rb_ary_or(ary1, ary2)
     VALUE ary1, ary2;
 {
-    VALUE hash;
-    VALUE ary3 = rb_ary_new();
+    VALUE hash, ary3;
     VALUE v;
     long i;
 
     ary2 = to_ary(ary2);
+    ary3 = rb_ary_new2(RARRAY(ary1)->len+RARRAY(ary2)->len);
     hash = ary_make_hash(ary1, ary2);
 
     for (i=0; i<RARRAY(ary1)->len; i++) {
@@ -1682,7 +1678,6 @@
 	    rb_ary_push(ary3, RARRAY(ary2)->ptr[i]);
 	}
     }
-
     return ary3;
 }
 
@@ -1690,14 +1685,16 @@
 rb_ary_uniq_bang(ary)
     VALUE ary;
 {
-    VALUE hash = ary_make_hash(ary, 0);
+    VALUE hash;
     VALUE *p, *q, *end;
 
+    rb_ary_modify(ary); 
+
+    hash = ary_make_hash(ary, 0);
+
     if (RARRAY(ary)->len == RHASH(hash)->tbl->num_entries) {
 	return Qnil;
     }
-
-    rb_ary_modify(ary);
     p = q = RARRAY(ary)->ptr;
     end = p + RARRAY(ary)->len;
     while (p < end) {

-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Michal Rokos                         Czech Technical University, Prague
E-mail:m.rokos@sh.cvut.cz      ICQ:36118339      Jabber:majkl@jabber.cz
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

In This Thread

Prev Next