diff options
| author | ksss <[email protected]> | 2017-04-02 23:34:26 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2017-04-02 23:34:26 +0900 |
| commit | 7f983928b938b25ca24439686bfa88fdfbe06f67 (patch) | |
| tree | a0eead1a4dc6c68c2fef6b5cae7ce0cf64fe002d /mrbgems/mruby-proc-ext/src/proc.c | |
| parent | be5c304b4cb4dc99748f441210ee9cdbab33551c (diff) | |
| download | mruby-7f983928b938b25ca24439686bfa88fdfbe06f67.tar.gz mruby-7f983928b938b25ca24439686bfa88fdfbe06f67.zip | |
Reduce object allocation
Diffstat (limited to 'mrbgems/mruby-proc-ext/src/proc.c')
| -rw-r--r-- | mrbgems/mruby-proc-ext/src/proc.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mrbgems/mruby-proc-ext/src/proc.c b/mrbgems/mruby-proc-ext/src/proc.c index 0322afe67..f7f031e7b 100644 --- a/mrbgems/mruby-proc-ext/src/proc.c +++ b/mrbgems/mruby-proc-ext/src/proc.c @@ -110,7 +110,7 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self) const struct RProc *proc = mrb_proc_ptr(self); const struct mrb_irep *irep = proc->body.irep; mrb_aspec aspec; - mrb_value parameters; + mrb_value sname, parameters; int i, j; if (MRB_PROC_CFUNC_P(proc)) { @@ -142,7 +142,8 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self) 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)); + if (p->size <= 0) continue; + sname = mrb_symbol_value(mrb_intern_cstr(mrb, p->name)); for (j = 0; j < p->size; i++, j++) { mrb_value a = mrb_ary_new(mrb); mrb_ary_push(mrb, a, sname); |
