summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-01 04:51:22 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-01 04:51:22 +0000
commita313c30d9c05d125b035a546bd3aa835bb7b88be (patch)
treeda962495aa536dd18a163c71813259a2d2103d28
parenta8c4400d1a6c96710fb0253b96113f9a9bdf86b7 (diff)
* gc.c (gc_mark_children): should NOT treat last element of
structs and arrays specially. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--gc.c12
2 files changed, 7 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index d21a476dd5..c71b80697f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Nov 1 13:23:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): should NOT treat last element of
+ structs and arrays specially.
+
Wed Oct 31 16:59:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (exec_under): should initialize ruby_frame->self;
diff --git a/gc.c b/gc.c
index c555f511e0..8b5c1a388a 100644
--- a/gc.c
+++ b/gc.c
@@ -630,17 +630,13 @@ gc_mark_children(ptr)
case T_ARRAY:
{
- int i, len = obj->as.array.len - 1;
+ int i, len = obj->as.array.len;
VALUE *ptr = obj->as.array.ptr;
for (i=0; i < len; i++) {
PUSH_MARK(*ptr);
ptr++;
}
- if (len >= 0) {
- obj = RANY(*ptr);
- goto Again;
- }
}
break;
@@ -698,17 +694,13 @@ gc_mark_children(ptr)
case T_STRUCT:
{
- int i, len = obj->as.rstruct.len - 1;
+ int i, len = obj->as.rstruct.len;
VALUE *ptr = obj->as.rstruct.ptr;
for (i=0; i < len; i++) {
PUSH_MARK(*ptr);
ptr++;
}
- if (len >= 0) {
- obj = RANY(ptr);
- goto Again;
- }
}
break;