summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-07-31 17:03:11 -0700
committerJeremy Evans <code@jeremyevans.net>2019-08-01 08:52:15 -0700
commitef45a57801a2ae8621b0cde59f11159f89f0a8dc (patch)
tree2b30a7ebea2497b1efc49cfc23d95f4e214a99ea /vm.c
parentb8e351a1b9a16ce27f53d15051a1d1f83911b8cb (diff)
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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/vm.c b/vm.c
index 593540a32e..b4e2e3c5e6 100644
--- a/vm.c
+++ b/vm.c
@@ -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;