diff options
| author | dearblue <[email protected]> | 2020-01-01 14:53:59 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2020-01-02 00:58:27 +0900 |
| commit | 00f5c92149a4e015bfb2dbdfbcd890aa2e65e801 (patch) | |
| tree | 85098a2e3532efac0c6bc3c3d8dbeb019256c1c5 /src | |
| parent | 9174b18f34cdee25fdf8433ee33642932b06a445 (diff) | |
| download | mruby-00f5c92149a4e015bfb2dbdfbcd890aa2e65e801.tar.gz mruby-00f5c92149a4e015bfb2dbdfbcd890aa2e65e801.zip | |
Call `va_end()` before return
The behavior when returning from a function without `va_end()` is
undefined.
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c index efe4b8a92..a7d9ebf37 100644 --- a/src/class.c +++ b/src/class.c @@ -897,7 +897,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) } break; case '|': - if (opt_skip && i == argc) return argc; + if (opt_skip && i == argc) goto finish; opt = TRUE; break; case '?': @@ -1004,6 +1004,8 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) if (!c && argc > i) { mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments"); } + +finish: va_end(ap); return i; } |
