diff options
| author | ksss <[email protected]> | 2017-04-02 23:30:05 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2017-04-02 23:30:05 +0900 |
| commit | be5c304b4cb4dc99748f441210ee9cdbab33551c (patch) | |
| tree | 0ec9a5210bb76665ed209c85ca20fd74762c6d41 /mrbgems/mruby-proc-ext/src | |
| parent | 5d00e853143016128bd54a3d09dae5cc488b7b2b (diff) | |
| download | mruby-be5c304b4cb4dc99748f441210ee9cdbab33551c.tar.gz mruby-be5c304b4cb4dc99748f441210ee9cdbab33551c.zip | |
Fix parameters when noname rest
Diffstat (limited to 'mrbgems/mruby-proc-ext/src')
| -rw-r--r-- | mrbgems/mruby-proc-ext/src/proc.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/mrbgems/mruby-proc-ext/src/proc.c b/mrbgems/mruby-proc-ext/src/proc.c index 8c9e300dc..0322afe67 100644 --- a/mrbgems/mruby-proc-ext/src/proc.c +++ b/mrbgems/mruby-proc-ext/src/proc.c @@ -140,14 +140,16 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self) parameters_list[4].size = MRB_ASPEC_BLOCK(aspec); parameters = mrb_ary_new_capa(mrb, irep->nlocals-1); + for (i = 0, p = parameters_list; p->name; p++) { mrb_value sname = mrb_symbol_value(mrb_intern_cstr(mrb, p->name)); for (j = 0; j < p->size; i++, j++) { - mrb_assert(i < (irep->nlocals-1)); - mrb_ary_push(mrb, parameters, mrb_assoc_new(mrb, - sname, - mrb_symbol_value(irep->lv[i].name) - )); + mrb_value a = mrb_ary_new(mrb); + mrb_ary_push(mrb, a, sname); + if (irep->lv[i].name) { + mrb_ary_push(mrb, a, mrb_symbol_value(irep->lv[i].name)); + } + mrb_ary_push(mrb, parameters, a); } } return parameters; |
