summaryrefslogtreecommitdiffhomepage
path: root/src/hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash.c')
-rw-r--r--src/hash.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/hash.c b/src/hash.c
index a09d509d0..93f0650dd 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -376,14 +376,12 @@ mrb_hash_aget(mrb_state *mrb, mrb_value self)
static mrb_value
mrb_hash_default(mrb_state *mrb, mrb_value hash)
{
- mrb_value *argv;
- int argc;
mrb_value key;
+ mrb_bool given;
- mrb_get_args(mrb, "*", &argv, &argc);
+ mrb_get_args(mrb, "|o?", &key, &given);
if (MRB_RHASH_PROCDEFAULT_P(hash)) {
- if (argc == 0) return mrb_nil_value();
- key = argv[0];
+ if (!given) return mrb_nil_value();
return mrb_funcall(mrb, RHASH_PROCDEFAULT(hash), "call", 2, hash, key);
}
else {