浏览代码

Fix: got into infinite loop

ceriel 29 年之前
父节点
当前提交
a0bd098f98
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      lang/m2/comp/enter.c

+ 9 - 1
lang/m2/comp/enter.c

@@ -254,7 +254,15 @@ ImportEffects(idef, scope, flag)
 	register t_def *df = idef;
 	register t_type *tp;
 
-	while (df->df_kind & D_IMPORTED) {
+	while ((df->df_kind & D_IMPORTED) && df->imp_def != df) {
+		/* The second condition could occur on some (erroneous and
+		   obscure) input such as:
+			IMPLEMENTATION MODULE Test;
+			FROM X IMPORT XType, XType;
+			END Test.
+		   when X does not exist.
+		*/
+
 		df = df->imp_def;
 	}