summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-12 09:18:44 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-12 09:18:44 +0900
commita25404c3057f89e8d1f17a05ef4473b8f1c8fe94 (patch)
tree8a83ce78d9d77b641020ccbfe279cba32c9e1277 /src/class.c
parent6dd1a570c2ee436bf20aef9e66e6c781cb222b96 (diff)
downloadmruby-a25404c3057f89e8d1f17a05ef4473b8f1c8fe94.tar.gz
mruby-a25404c3057f89e8d1f17a05ef4473b8f1c8fe94.zip
The attached object may not be a class; fix #3602
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c
index baefe3fde..c7781c9b8 100644
--- a/src/class.c
+++ b/src/class.c
@@ -137,7 +137,15 @@ mrb_class_outer_module(mrb_state *mrb, struct RClass *c)
mrb_value klass;
klass = mrb_obj_iv_get(mrb, (struct RObject *)cls,
mrb_intern_lit(mrb, "__attached__"));
- cls = mrb_class_ptr(klass);
+ switch (mrb_type(klass)) {
+ case MRB_TT_CLASS:
+ case MRB_TT_SCLASS:
+ case MRB_TT_MODULE:
+ cls = mrb_class_ptr(klass);
+ break;
+ default:
+ break;
+ }
}
return cls;
}