From 1aee40ac343104b8b9a65201471378e3924f67ba Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Tue, 24 Mar 2015 23:43:02 +0100
Subject: [PATCH] Add check to removeProcessor to leave out the output node

---
 .../ProcessorGraph/ProcessorGraph.cpp          | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/Source/Processors/ProcessorGraph/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph/ProcessorGraph.cpp
index ee18bf5b2..6a5ff4bce 100644
--- a/Source/Processors/ProcessorGraph/ProcessorGraph.cpp
+++ b/Source/Processors/ProcessorGraph/ProcessorGraph.cpp
@@ -728,15 +728,15 @@ void ProcessorGraph::removeProcessor(GenericProcessor* processor)
         //Look for the next source node. If none is found, set the sourceid to 0
         for (int i = 0; i < getNumNodes() && newId == 0; i++)
         {
-            // Michael Borisov: here, for some reason (bug?) not all processors are of type GenericProcessor
-            // so we need to do a dynamic cast and check its results
-            // Otherwise the Release build crashes, and the Debug build fails runtime checks
-            GenericProcessor* p = dynamic_cast<GenericProcessor*>(getNode(i)->getProcessor());
-            //GenericProcessor* p = static_cast<GenericProcessor*>(getNode(i)->getProcessor());
-			if (p && p->isSource() && p->generatesTimestamps())
-            {
-                newId = p->nodeId;
-            }
+			if (getNode(i)->nodeId != OUTPUT_NODE_ID)
+			{
+				GenericProcessor* p = dynamic_cast<GenericProcessor*>(getNode(i)->getProcessor());
+				//GenericProcessor* p = static_cast<GenericProcessor*>(getNode(i)->getProcessor());
+				if (p && p->isSource() && p->generatesTimestamps())
+				{
+					newId = p->nodeId;
+				}
+			}
         }
         getMessageCenter()->setSourceNodeId(newId);
     }
-- 
GitLab