summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
authorÉtienne Barrié <etienne.barrie@gmail.com>2025-12-16 17:06:33 +0100
committerGitHub <noreply@github.com>2025-12-16 11:06:33 -0500
commit09a29e1312121fed5704ac196413c3b5ecb83fd7 (patch)
treeb53e8d190582e04eb0ef0c293f866823d1b35027 /variable.c
parent6b35f074bd83794007d4c7b773a289bddef0dbdf (diff)
Add the class variable and the class itself in Ractor::IsolationError (#15562)
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c13
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)