diff --git a/extras/Projucer/Source/CodeEditor/jucer_LiveBuildCodeEditor.h b/extras/Projucer/Source/CodeEditor/jucer_LiveBuildCodeEditor.h index dcf368bb86..fc8372890c 100644 --- a/extras/Projucer/Source/CodeEditor/jucer_LiveBuildCodeEditor.h +++ b/extras/Projucer/Source/CodeEditor/jucer_LiveBuildCodeEditor.h @@ -231,24 +231,31 @@ private: void timerCallback() override { - Array newClasses; + Array> newClasses; if (childProcess != nullptr) const_cast (childProcess->getComponentList()).globalNamespace.findClassesDeclaredInFile (newClasses, file); for (int i = newClasses.size(); --i >= 0;) - if (! newClasses.getUnchecked(i)->getInstantiationFlags().canBeInstantiated()) + { + auto& c = newClasses.getReference (i); + + if (c == nullptr || ! c->getInstantiationFlags().canBeInstantiated()) newClasses.remove (i); + } if (newClasses != classes) { classes = newClasses; deleteOverlays(); - for (auto& c : classes) + for (auto c : classes) { - CodeDocument::Position pos (owner.getDocument(), c->getClassDeclarationRange().range.getStart()); - overlays.add (new LaunchClassOverlayComponent (owner, pos, pos, c->getName())); + if (c != nullptr) + { + CodeDocument::Position pos (owner.getDocument(), c->getClassDeclarationRange().range.getStart()); + overlays.add (new LaunchClassOverlayComponent (owner, pos, pos, c->getName())); + } } } } @@ -264,7 +271,7 @@ private: GenericCodeEditorComponent& owner; CompileEngineChildProcess::Ptr childProcess; File file; - Array classes; + Array> classes; Array> overlays; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComponentClassList) diff --git a/extras/Projucer/Source/LiveBuildEngine/jucer_ClassDatabase.h b/extras/Projucer/Source/LiveBuildEngine/jucer_ClassDatabase.h index 7fafdf2244..64a6f398ed 100644 --- a/extras/Projucer/Source/LiveBuildEngine/jucer_ClassDatabase.h +++ b/extras/Projucer/Source/LiveBuildEngine/jucer_ClassDatabase.h @@ -452,6 +452,7 @@ struct ClassDatabase InstantiationFlags instantiationFlags; JUCE_LEAK_DETECTOR (Class) + JUCE_DECLARE_WEAK_REFERENCEABLE (Class) }; //============================================================================== @@ -522,11 +523,11 @@ struct ClassDatabase return nullptr; } - void findClassesDeclaredInFile (Array& results, const File& file) + void findClassesDeclaredInFile (Array>& results, const File& file) { for (int i = 0; i < components.size(); ++i) { - auto c = components.getReference (i); + auto& c = components.getReference (i); if (c.isDeclaredInFile (file)) results.add (&c);