diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-06-28 10:51:42 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-06-28 10:53:37 +0900 |
commit | 47a9b58b2ae52a10c93c5368c7aa30b1eb398bc7 (patch) | |
tree | 2373a32c5e29a6c8b77728a268f2f42c853dd795 /hash.c | |
parent | e724857f42280fe285e6d0de69b4832458b80b0a (diff) |
Share freeze option handling
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 20 |
1 files changed, 3 insertions, 17 deletions
@@ -6501,25 +6501,11 @@ static VALUE env_clone(int argc, VALUE *argv, VALUE obj) { if (argc) { - static ID keyword_ids[1]; VALUE opt, kwfreeze; - - if (!keyword_ids[0]) { - CONST_ID(keyword_ids[0], "freeze"); - } - rb_scan_args(argc, argv, "0:", &opt); - if (!NIL_P(opt)) { - rb_get_kwargs(opt, keyword_ids, 0, 1, &kwfreeze); - switch (kwfreeze) { - case Qtrue: + if (rb_scan_args(argc, argv, "0:", &opt) < argc) { + kwfreeze = rb_get_freeze_opt(1, &opt); + if (RTEST(kwfreeze)) { rb_raise(rb_eTypeError, "cannot freeze ENV"); - break; - default: - rb_raise(rb_eArgError, "invalid value for freeze keyword"); - break; - case Qnil: - case Qfalse: - break; } } } |