From fbcd0652944568c43a6ae427960d909d62ce6a8d Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Tue, 13 Aug 2019 22:44:36 -0700 Subject: Remove support for nil::Constant This was an intentional bug added in 1.9. The approach taken here is to add a second operand to the getconstant instruction for whether nil should be allowed and treated as current scope. Fixes [Bug #11718] --- insns.def | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'insns.def') diff --git a/insns.def b/insns.def index 6cfb3b121f..e84fcecfe7 100644 --- a/insns.def +++ b/insns.def @@ -252,19 +252,19 @@ setclassvariable rb_cvar_set(vm_get_cvar_base(vm_get_cref(GET_EP()), GET_CFP()), id, val); } -/* Get constant variable id. If klass is Qnil, constants +/* Get constant variable id. If klass is Qnil and allow_nil is true, constants are searched in the current scope. Otherwise, get constant under klass class or module. */ DEFINE_INSN getconstant -(ID id) +(ID id, VALUE allow_nil) (VALUE klass) (VALUE val) /* getconstant can kick autoload */ // attr bool leaf = false; /* has rb_autoload_load() */ { - val = vm_get_ev_const(ec, klass, id, 0); + val = vm_get_ev_const(ec, klass, id, allow_nil, 0); } /* Set constant variable id under cbase class or module. -- cgit v1.2.3