diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-04 12:14:23 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-04 12:14:23 +0900 |
| commit | 59cd24d41f1e6b5e25d35103c0720e8aa8cae0b6 (patch) | |
| tree | c7d96eddbe8b171d59f17f58bd0542037b114221 /src | |
| parent | 9f6d69ee562cecb597ab02b2b716e3d773141f17 (diff) | |
| download | mruby-59cd24d41f1e6b5e25d35103c0720e8aa8cae0b6.tar.gz mruby-59cd24d41f1e6b5e25d35103c0720e8aa8cae0b6.zip | |
Hash#replace should copy default as well; close #2004
Diffstat (limited to 'src')
| -rw-r--r-- | src/hash.c | 8 |
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 { |
