summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;