From e821f974511fc7577f467f6178ccf2de99e355b2 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 3 Aug 2016 08:15:08 +0000 Subject: object.c: restrict freeze option * object.c (rb_obj_clone2): restrict freeze option to true other than false which only has the effect. [Feature #12300] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ object.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 11ae3517ea..edad3d04ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Aug 3 17:15:06 2016 Nobuyoshi Nakada + + * object.c (rb_obj_clone2): restrict freeze option to true other + than false which only has the effect. [Feature #12300] + Wed Aug 3 10:47:07 2016 Koichi Sasada * vm_core.h: introduce VM_FRAME_RUBYFRAME_P() diff --git a/object.c b/object.c index a4a87db4d6..c58a46b293 100644 --- a/object.c +++ b/object.c @@ -339,6 +339,10 @@ rb_obj_clone2(int argc, VALUE *argv, VALUE obj) if (!NIL_P(opt)) { rb_get_kwargs(opt, keyword_ids, 0, 1, kwargs); kwfreeze = kwargs[0]; + if (kwfreeze != Qundef && kwfreeze != Qtrue && kwfreeze != Qfalse) { + rb_raise(rb_eArgError, "unexpected value for freeze: %s", + rb_builtin_class_name(kwfreeze)); + } } if (rb_special_const_p(obj)) { -- cgit v1.2.3