summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-07-14 13:34:21 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-07-14 13:34:21 +0900
commit4e7050fe0c56a9403f182d3f79a22a4196d377f0 (patch)
tree0e22f2697fd9c135d7437a5b7c44d30a6e421008
parenta0754986134fbe6b65992b19338c97d596f4ef60 (diff)
downloadmruby-4e7050fe0c56a9403f182d3f79a22a4196d377f0.tar.gz
mruby-4e7050fe0c56a9403f182d3f79a22a4196d377f0.zip
mrb_get_args: allow d!
-rw-r--r--src/class.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c
index b5f5f5287..b306cb489 100644
--- a/src/class.c
+++ b/src/class.c
@@ -726,6 +726,14 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
datap = va_arg(ap, void**);
type = va_arg(ap, struct mrb_data_type const*);
+ if (*format == '!') {
+ format++;
+ if (i < argc && mrb_nil_p(*sp)) {
+ *datap = 0;
+ i++;
+ break;
+ }
+ }
if (i < argc) {
*datap = mrb_data_get_ptr(mrb, *sp++, type);
++i;