summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorskandhas <[email protected]>2013-04-27 16:39:58 +0800
committerskandhas <[email protected]>2013-04-27 16:39:58 +0800
commit96e247a4ad5bd137d8c9c7539b3d7457abd1b3f5 (patch)
treeca56305bb4392c8caedd4f5f7a61dce3af5d21ef /src
parentecd87aa5458f4d5c56dc1d2814975beed6b22dfc (diff)
downloadmruby-96e247a4ad5bd137d8c9c7539b3d7457abd1b3f5.tar.gz
mruby-96e247a4ad5bd137d8c9c7539b3d7457abd1b3f5.zip
detect cyclic-include in Module#include
Diffstat (limited to 'src')
-rw-r--r--src/class.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c
index 6b9f246e9..40335e039 100644
--- a/src/class.c
+++ b/src/class.c
@@ -690,6 +690,9 @@ mrb_include_module(mrb_state *mrb, struct RClass *c, struct RClass *m)
struct RClass *p = c, *ic;
int superclass_seen = 0;
+ if (c->mt == m->mt) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "cyclic include detected");
+ }
while (p) {
if (c != p && p->tt == MRB_TT_CLASS) {
superclass_seen = 1;