diff -rupN org/opensg/Source/System/State/Shader/Base/OSGShaderCache.cpp new/opensg/Source/System/State/Shader/Base/OSGShaderCache.cpp
--- org/opensg/Source/System/State/Shader/Base/OSGShaderCache.cpp	2015-02-06 13:37:42.164395000 +0100
+++ new/opensg/Source/System/State/Shader/Base/OSGShaderCache.cpp	2015-02-06 13:52:25.447952400 +0100
@@ -430,7 +430,7 @@ void ShaderCache::updateRemoveCallback(S
 
     ShaderExecutableChunk::VertexShaderIt vIt  = 
         pShader->getMFVertexShader()->begin();
-    ShaderExecutableChunk::FragmentShaderIt vEnd = 
+    ShaderExecutableChunk::VertexShaderIt vEnd = 
         pShader->getMFVertexShader()->end  ();
 
     for(; vIt != vEnd; ++vIt)
@@ -496,7 +496,7 @@ void ShaderCache::clearShRemoveCallback(
 
     ShaderExecutableChunk::VertexShaderIt vIt  = 
         pShader->getMFVertexShader()->begin();
-    ShaderExecutableChunk::FragmentShaderIt vEnd = 
+    ShaderExecutableChunk::VertexShaderIt vEnd = 
         pShader->getMFVertexShader()->end  ();
 
     for(; vIt != vEnd; ++vIt)
diff -rupN org/opensg/Source/System/State/Shader/Base/OSGShaderCacheTree.inl new/opensg/Source/System/State/Shader/Base/OSGShaderCacheTree.inl
--- org/opensg/Source/System/State/Shader/Base/OSGShaderCacheTree.inl	2015-02-06 13:37:42.164395000 +0100
+++ new/opensg/Source/System/State/Shader/Base/OSGShaderCacheTree.inl	2015-02-06 13:50:31.980952700 +0100
@@ -3288,31 +3288,34 @@ void ShaderCacheTreeV3<ObjectT, LevelBit
     {
         for(UInt32 i = 0; i < LevelSize; ++i)
         {
-            TreeNode *pChild = pCurrNode->_vChildren[i].asT2();
-
-            if(0x0000 != (i & uiCurrBits) && pChild != NULL)
+            if(0x0000 != (i & uiCurrBits))
             {
-                if(pChild->_pNext == NULL)
+                TreeNode *pChild = pCurrNode->_vChildren[i].asT2();
+
+                if(pChild != NULL)
                 {
-                    pChild->_pPrev->_pNext = NULL;
+                    if(pChild->_pNext == NULL)
+                    {
+                        pChild->_pPrev->_pNext = NULL;
+                    }
+                    else
+                    {
+                        pChild->_pPrev->_pNext = pChild->_pNext;
+                        pChild->_pNext->_pPrev = pChild->_pPrev;
+                    }
+                    
+                    pChild->_pPrev = NULL;
+                    pChild->_pNext = NULL;
+
+                    eraseNode(pCurrNode->_vChildren[i].asT2());
+                    pCurrNode->_vJumps   [i] = 0;
+                    pCurrNode->_vChildren[i].setAsT2(NULL);
                 }
-                else
+                else if(pCurrNode->_vChildren[i].asT1() != NULL)
                 {
-                    pChild->_pPrev->_pNext = pChild->_pNext;
-                    pChild->_pNext->_pPrev = pChild->_pPrev;
+                    pCurrNode->_vChildren[i].setAsT1(NULL);
+                    pCurrNode->_vJumps   [i] = 0;
                 }
-                
-                pChild->_pPrev = NULL;
-                pChild->_pNext = NULL;
-
-                eraseNode(pCurrNode->_vChildren[i].asT2());
-                pCurrNode->_vJumps   [i] = 0;
-                pCurrNode->_vChildren[i].setAsT2(NULL);
-            }
-            else if(pCurrNode->_vChildren[i].asT1() != NULL)
-            {
-                pCurrNode->_vChildren[i].setAsT1(NULL);
-                pCurrNode->_vJumps   [i] = 0;
             }
         }
     }
@@ -3340,6 +3343,9 @@ void ShaderCacheTreeV3<ObjectT,
         fprintf(pOut, "[\n");
         fprintf(pOut, "    label=\"");
 
+        if (_vLevelEntries.empty())
+            fprintf(pOut, "\"\n");
+
         for(UInt32 i = 0; i < _vLevelEntries.size(); ++i)
         {
             if(_vLevelEntries[i] != NULL)
diff -rupN org/opensg/Source/System/State/Shader/Chunks/OSGShaderProgramVariableChunk.cpp new/opensg/Source/System/State/Shader/Chunks/OSGShaderProgramVariableChunk.cpp
--- org/opensg/Source/System/State/Shader/Chunks/OSGShaderProgramVariableChunk.cpp	2015-02-06 13:37:42.179995000 +0100
+++ new/opensg/Source/System/State/Shader/Chunks/OSGShaderProgramVariableChunk.cpp	2015-02-06 13:47:16.855809900 +0100
@@ -304,6 +304,8 @@ void ShaderProgramVariableChunk::resolve
             (cfIt->_func)(this, 0x0000, ChangedOrigin::External);
     }
 
+    clearDestroyedFunctors();
+
     Inherited::resolveLinks();
 }
 
