diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-15 16:41:28 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-15 16:41:28 +0000 |
commit | e0648d6cf540d92983fd8ec232e4e666290c8e7a (patch) | |
tree | 0e997e405b70ede14e32152e128deefc17db8881 | |
parent | c703f58807c35f9166886f993d91dfdda6643d65 (diff) | |
download | ruby-e0648d6cf540d92983fd8ec232e4e666290c8e7a.tar.gz |
* eval.c (rb_proc_arity): get rid of segfault for mere splat.
* gc.c (gc_mark_children): NODE_BLOCK_PASS needs u3 to be marked.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | eval.c | 2 | ||||
-rw-r--r-- | gc.c | 2 |
3 files changed, 8 insertions, 2 deletions
@@ -1,3 +1,9 @@ +Fri Jun 16 01:41:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * eval.c (rb_proc_arity): get rid of segfault for mere splat. + + * gc.c (gc_mark_children): NODE_BLOCK_PASS needs u3 to be marked. + Wed Jun 14 18:00:20 2006 Eric Hodel <drbrain@segment7.net> * enum.c (enum_any): Documentation typo. @@ -8530,7 +8530,7 @@ rb_proc_arity(VALUE proc) list = list->nd_next; } if (var->nd_args) { - if (nd_type(var->nd_args) == NODE_POSTARG) { + if (var->nd_args != (NODE *)-1 && nd_type(var->nd_args) == NODE_POSTARG) { return -n-1-var->nd_args->nd_head->nd_alen; } return -n-1; @@ -794,6 +794,7 @@ gc_mark_children(VALUE ptr, int lev) case NODE_RESBODY: case NODE_CLASS: case NODE_ARGS: + case NODE_BLOCK_PASS: gc_mark((VALUE)obj->as.node.u2.node, lev); /* fall through */ case NODE_BLOCK: /* 1,3 */ @@ -833,7 +834,6 @@ gc_mark_children(VALUE ptr, int lev) case NODE_MODULE: case NODE_ALIAS: case NODE_VALIAS: - case NODE_BLOCK_PASS: gc_mark((VALUE)obj->as.node.u1.node, lev); /* fall through */ case NODE_METHOD: /* 2 */ |