You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by at...@apache.org on 2014/03/24 01:25:59 UTC

svn commit: r1580673 - /commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java

Author: ate
Date: Mon Mar 24 00:25:59 2014
New Revision: 1580673

URL: http://svn.apache.org/r1580673
Log:
SCXML-196: fix NPE when a Transition has multiple targets (at least 3) without the same Parallel LCA (Least Common Ancestor)

Modified:
    commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java

Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java?rev=1580673&r1=1580672&r2=1580673&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java (original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java Mon Mar 24 00:25:59 2014
@@ -453,9 +453,13 @@ final class ModelUpdater {
         Parallel parallel = (Parallel) lca;
         Set<TransitionTarget> regions = new HashSet<TransitionTarget>();
         for (TransitionTarget tt : tts) {
-            while (tt.getParent() != parallel) {
+            while (tt != null && tt.getParent() != parallel) {
                 tt = tt.getParent();
             }
+            if (tt == null) {
+                // target outside lca
+                return false;
+            }
             if (!regions.add(tt)) {
                 return false; // One per region
             }