diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-08-13 15:34:13 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-08-25 09:19:17 +0900 |
| commit | 31827189ab98a4e51c84772fd782627fc8feb8cc (patch) | |
| tree | a2bea13897b4250900cc83e8ed72c991e91d728e /mrbgems | |
| parent | fbfe519be77a3afbcb633b2c73709ae400d953d9 (diff) | |
| download | mruby-31827189ab98a4e51c84772fd782627fc8feb8cc.tar.gz mruby-31827189ab98a4e51c84772fd782627fc8feb8cc.zip | |
Remove potential path to avoid uninitialized variable access.
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-struct/src/struct.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index fe7e73f04..b567a00d5 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -302,17 +302,19 @@ mrb_struct_s_def(mrb_state *mrb, mrb_value klass) } } rest = mrb_ary_new_from_values(mrb, argcnt, pargv); - for (i=0; i<RARRAY_LEN(rest); i++) { + for (i=0; i<argcnt; i++) { id = mrb_obj_to_sym(mrb, RARRAY_PTR(rest)[i]); mrb_ary_set(mrb, rest, i, mrb_symbol_value(id)); } - } - st = make_struct(mrb, name, rest, mrb_class_ptr(klass)); - if (!mrb_nil_p(b)) { - mrb_yield_with_class(mrb, b, 1, &st, st, mrb_class_ptr(st)); - } + st = make_struct(mrb, name, rest, mrb_class_ptr(klass)); + if (!mrb_nil_p(b)) { + mrb_yield_with_class(mrb, b, 1, &st, st, mrb_class_ptr(st)); + } - return st; + return st; + } + /* not reached */ + return mrb_nil_value(); } static mrb_int |
