From 4e1abad452c0f52f8cbd895b611197fb1b07a620 Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Tue, 3 Feb 2015 18:33:21 +0100 Subject: [PATCH] Avoid infinite recursion: replace the variables without calling the method recursively --- .../src/jetbrains/mps/unification/Unification.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/reactor/code/src/jetbrains/mps/unification/Unification.java b/reactor/code/src/jetbrains/mps/unification/Unification.java index 2df9f9da..beaddf53 100644 --- a/reactor/code/src/jetbrains/mps/unification/Unification.java +++ b/reactor/code/src/jetbrains/mps/unification/Unification.java @@ -82,15 +82,15 @@ public class Unification { private void union(Node s, Node t) { Integer ssize = getSize(s); Integer tsize = getSize(t); + + // keep the order if (ssize < tsize) { - union(t, s); - return; + Node tmp = t; t = s; s = tmp; } - if (ssize == tsize && s.isVar() && t.isVar()) { + else if (ssize == tsize && s.isVar() && t.isVar()) { // ensure proper order of variables in the substitution if(s.asVar().compareTo(t.asVar()) < 0) { - union(t, s); - return; + Node tmp = t; t = s; s = tmp; } }