* eval.c (formal_assign): packed post splat arguments may conflict

with normal arguments.  [ruby-core:09021]

* eval.c (rb_call0): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2006-10-07 14:35:19 +00:00
Родитель 4632511aa9
Коммит b067aef7c0
2 изменённых файлов: 12 добавлений и 2 удалений

Просмотреть файл

@ -1,3 +1,10 @@
Sat Oct 7 23:33:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (formal_assign): packed post splat arguments may conflict
with normal arguments. [ruby-core:09021]
* eval.c (rb_call0): ditto.
Sat Oct 7 11:53:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* object.c (rb_mod_initialize): since module_eval no longer passes

7
eval.c
Просмотреть файл

@ -5678,6 +5678,7 @@ formal_assign(VALUE recv, NODE *node, int argc, const VALUE *argv, VALUE *local_
v = rb_ary_new4(argc,argv);
n += npost;
i += n*256;
i = -i;
}
else {
v = rb_ary_new2(0);
@ -5719,11 +5720,13 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
stack_check();
rb_gc_finalize_deferred();
}
if (argc >= 256) {
if (argc < 0) {
VALUE tmp;
VALUE *nargv;
int n = argc / 256 - 1;
int n;
argc = -argc;
n = argc / 256 - 1;
argc %= 256;
tmp = svalue_to_avalue(argv[argc]);
nargv = TMP_ALLOC(argc + RARRAY_LEN(tmp) + n);