[#290] — Florian Frank <flori@...>
Hi all,
5 messages
2002/08/03
[#297] GC longjmp macros — Michal Rokos <m.rokos@...>
Hi,
5 messages
2002/08/05
[#308] Q: OSSL in std. distr? — Michal Rokos <m.rokos@...>
Hi,
4 messages
2002/08/08
[#326] Implications of a #force_free method in Object? — Matthew Bloch <mattbee@...>
Hello;
8 messages
2002/08/19
[#328] Int vs Long — Michal Rokos <m.rokos@...>
Hi,
7 messages
2002/08/21
[#337] Int vs Long (2nd part) — Michal Rokos <m.rokos@...>
Hi,
7 messages
2002/08/22
[#340] Int vs Long #3 — Michal Rokos <m.rokos@...>
Hi,
9 messages
2002/08/22
[#344] Re: [Cleanup] Int vs Long #3
— nobu.nokada@...
2002/08/22
Hi,
[#348] Re: [Cleanup] Int vs Long #3
— Michal Rokos <m.rokos@...>
2002/08/23
Hello,
[#353] File (struct stat handling) — Michal Rokos <m.rokos@...>
Hello,
6 messages
2002/08/23
[#358] node.h for eval.c — Michal Rokos <m.rokos@...>
Hi,
5 messages
2002/08/23
[#372] rb_class_path — Michal Rokos <m.rokos@...>
Hello,
7 messages
2002/08/27
[#382] Port match to new dup, clone framework — Michal Rokos <m.rokos@...>
Hi,
5 messages
2002/08/28
[#393] in dln.c — Michal Rokos <m.rokos@...>
Hi,
14 messages
2002/08/30
[#398] Re: [MemLeak] in dln.c
— nobu.nokada@...
2002/08/31
Hi,
[#403] Re: [MemLeak] in dln.c
— Michal Rokos <m.rokos@...>
2002/09/02
Hello,
[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
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-