@@ -264,22 +264,17 @@ mrb_struct_s_def(mrb_state *mrb, mrb_value klass)
264264265265name = mrb_nil_value();
266266mrb_get_args(mrb, "*&", &argv, &argc, &b);
267-if (argc == 0) { /* special case to avoid crash */
268-mrb_argnum_error(mrb, argc, 1, -1);
269- }
270-else {
267+if (argc > 0) {
271268pargv = argv;
272269argcnt = argc;
273-if (argc > 0) {
274-name = argv[0];
275-if (mrb_symbol_p(name)) {
276-/* 1stArgument:symbol -> name=nil rest=argv[0..n] */
277-name = mrb_nil_value();
278- }
279-else {
280-pargv++;
281-argcnt--;
282- }
270+name = argv[0];
271+if (mrb_symbol_p(name)) {
272+/* 1stArgument:symbol -> name=nil rest=argv[0..n] */
273+name = mrb_nil_value();
274+ }
275+else {
276+pargv++;
277+argcnt--;
283278 }
284279rest = mrb_ary_new_from_values(mrb, argcnt, pargv);
285280for (i=0; i<argcnt; i++) {
@@ -290,11 +285,8 @@ mrb_struct_s_def(mrb_state *mrb, mrb_value klass)
290285if (!mrb_nil_p(b)) {
291286mrb_yield_with_class(mrb, b, 1, &st, st, mrb_class_ptr(st));
292287 }
293-294-return st;
295288 }
296-/* not reached */
297-return mrb_nil_value();
289+return st;
298290}
299291300292static mrb_int