From 609601604d1f52131fe13d526042afa6131061e2 Mon Sep 17 00:00:00 2001
From: Michael Borisov <mborisov1@github.com>
Date: Tue, 24 Mar 2015 23:57:42 +0200
Subject: [PATCH] Fixed a crash on deleting source node

---
 Source/Processors/ProcessorGraph/ProcessorGraph.cpp | 8 ++++++--
 Source/UI/EditorViewport.cpp                        | 1 +
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/Source/Processors/ProcessorGraph/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph/ProcessorGraph.cpp
index e7c7f8d85..ee18bf5b2 100644
--- a/Source/Processors/ProcessorGraph/ProcessorGraph.cpp
+++ b/Source/Processors/ProcessorGraph/ProcessorGraph.cpp
@@ -728,8 +728,12 @@ 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++)
         {
-            GenericProcessor* p = static_cast<GenericProcessor*>(getNode(i)->getProcessor());
-			if (p->isSource() && p->generatesTimestamps())
+            // 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;
             }
diff --git a/Source/UI/EditorViewport.cpp b/Source/UI/EditorViewport.cpp
index ff2724bef..14c395fab 100755
--- a/Source/UI/EditorViewport.cpp
+++ b/Source/UI/EditorViewport.cpp
@@ -459,6 +459,7 @@ void EditorViewport::refreshEditors()
         }
     }
 
+    // BUG: variable is used without being initialized
     if (tooLong && editorArray.size() > 0)
         rightButton->setActive(true);
     else
-- 
GitLab