diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-07-31 17:03:11 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2019-08-01 08:52:15 -0700 |
commit | ef45a57801a2ae8621b0cde59f11159f89f0a8dc (patch) | |
tree | 2b30a7ebea2497b1efc49cfc23d95f4e214a99ea /vm.c | |
parent | b8e351a1b9a16ce27f53d15051a1d1f83911b8cb (diff) | |
download | ruby-ef45a57801a2ae8621b0cde59f11159f89f0a8dc.tar.gz |
Make attr* methods define public methods if self in caller is not same as receiver
Previously, attr* methods could be private even if not in the
private section of a class/module block.
This uses the same approach that ruby started using for define_method
in 1fc33199736f316dd71d0c551edbf514528ddde6.
Fixes [Bug #4537]
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -1383,7 +1383,7 @@ rb_vm_cref_in_context(VALUE self, VALUE cbase) const rb_execution_context_t *ec = GET_EC(); const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp); const rb_cref_t *cref; - if (cfp->self != self) return NULL; + if (!cfp || cfp->self != self) return NULL; if (!vm_env_cref_by_cref(cfp->ep)) return NULL; cref = vm_get_cref(cfp->ep); if (CREF_CLASS(cref) != cbase) return NULL; |