Fix keyword arguments not be obtained with mrb_get_args(); Fix #4754

If ":" is after "|" and there is no "?" or "*", the keyword argument
could not be obtained and it was not initialized with `undef`.

For example: "|oo:"
This commit is contained in:
dearblue
2019-12-07 22:48:58 +09:00
parent 6e5c861fff
commit 1ca4fdc4c7
+3 -3
View File
@@ -620,11 +620,11 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
goto check_exit;
case '!':
break;
case '&': case '?':
if (opt) opt_skip = FALSE;
break;
case ':':
reqkarg = TRUE;
/* fall through */
case '&': case '?':
if (opt) opt_skip = FALSE;
break;
default:
if (!opt) needargc ++;