diff options
| author | Étienne Barrié <etienne.barrie@gmail.com> | 2025-12-16 17:06:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-16 11:06:33 -0500 |
| commit | 09a29e1312121fed5704ac196413c3b5ecb83fd7 (patch) | |
| tree | b53e8d190582e04eb0ef0c293f866823d1b35027 /variable.c | |
| parent | 6b35f074bd83794007d4c7b773a289bddef0dbdf (diff) | |
Add the class variable and the class itself in Ractor::IsolationError (#15562)
Diffstat (limited to 'variable.c')
| -rw-r--r-- | variable.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/variable.c b/variable.c index 47b5218566..a189927472 100644 --- a/variable.c +++ b/variable.c @@ -1195,10 +1195,13 @@ IVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(ID id) } } -#define CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR() \ - if (UNLIKELY(!rb_ractor_main_p())) { \ - rb_raise(rb_eRactorIsolationError, "can not access class variables from non-main Ractors"); \ - } +static void +CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(VALUE klass, ID id) +{ + if (UNLIKELY(!rb_ractor_main_p())) { + rb_raise(rb_eRactorIsolationError, "can not access class variables from non-main Ractors (%"PRIsVALUE" from %"PRIsVALUE")", rb_id2str(id), klass); + } +} static inline void ivar_ractor_check(VALUE obj, ID id) @@ -4202,7 +4205,7 @@ cvar_overtaken(VALUE front, VALUE target, ID id) } #define CVAR_LOOKUP(v,r) do {\ - CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(); \ + CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(klass, id); \ if (cvar_lookup_at(klass, id, (v))) {r;}\ CVAR_FOREACH_ANCESTORS(klass, v, r);\ } while(0) |
