From 96e247a4ad5bd137d8c9c7539b3d7457abd1b3f5 Mon Sep 17 00:00:00 2001 From: skandhas Date: Sat, 27 Apr 2013 16:39:58 +0800 Subject: detect cyclic-include in Module#include --- src/class.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/class.c') 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; -- cgit v1.2.3