summaryrefslogtreecommitdiffhomepage
path: root/src/variable.c
diff options
context:
space:
mode:
authordearblue <[email protected]>2018-09-05 22:13:46 +0900
committerdearblue <[email protected]>2018-09-07 22:32:34 +0900
commit2a24b40d300b1e0072a4a0f7de43b126479bc390 (patch)
treeda71431fbb0ce5dd8b6754789132235668c24af5 /src/variable.c
parent3447162a4c5f1e5e7a1206deaacd8cb6ad2d3897 (diff)
downloadmruby-2a24b40d300b1e0072a4a0f7de43b126479bc390.tar.gz
mruby-2a24b40d300b1e0072a4a0f7de43b126479bc390.zip
Not set a class/module name into anonymous class/module
Diffstat (limited to 'src/variable.c')
-rw-r--r--src/variable.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/variable.c b/src/variable.c
index 00bdb4b8d..4bb3e4bef 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -1069,8 +1069,10 @@ mrb_class_find_path(mrb_state *mrb, struct RClass *c)
str = mrb_sym2name_len(mrb, name, &len);
mrb_str_cat(mrb, path, str, len);
- iv_del(mrb, c->iv, mrb_intern_lit(mrb, "__outer__"), NULL);
- iv_put(mrb, c->iv, mrb_intern_lit(mrb, "__classname__"), path);
- mrb_field_write_barrier_value(mrb, (struct RBasic*)c, path);
+ if (RSTRING_PTR(path)[0] != '#') {
+ iv_del(mrb, c->iv, mrb_intern_lit(mrb, "__outer__"), NULL);
+ iv_put(mrb, c->iv, mrb_intern_lit(mrb, "__classname__"), path);
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)c, path);
+ }
return path;
}