diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index a57be2160af..54c4e82e34a 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,10 @@ +2003-11-06 David Inglis + + Fix for 45737 & 45835 + + * model/org/eclipse/cdt/internal/core/DeltaProcessor.java + * model/org/eclipse/cdt/internal/core/CModelManager.java + 2003-10-29 David Inglis Fix for 45734 & 45736, Though this only addresses a small part on the later. diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java index b1ae996695d..3fe6ae6907e 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java @@ -373,6 +373,10 @@ public class CModelManager implements IResourceChangeListener { // so we have to recall create again. releaseCElement(celement); celement = create(project); + Parent parent = (Parent)celement.getParent(); + CElementInfo info = (CElementInfo)parent.getElementInfo(); + info.addChild(celement); + // Fired and ICElementDelta.PARSER_CHANGED CElementDelta delta = new CElementDelta(getCModel()); delta.binaryParserChanged(celement); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java index ac19437a3ab..6645bf2a08e 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java @@ -61,12 +61,15 @@ public class DeltaProcessor { ICElement parent = manager.create(resource.getParent()); // Probably it was deleted, find it if (parent instanceof IParent) { - ICElement[] children = ((CElement)parent).getElementInfo().getChildren(); - for (int i = 0; i < children.length; i++) { - IResource res = children[i].getResource(); - if (res != null && res.equals(resource)) { - celement = children[i]; - break; + ICElement[] children; + if ( CModelManager.getDefault().peekAtInfo(parent) != null ) { + children = ((CElement)parent).getElementInfo().getChildren(); + for (int i = 0; i < children.length; i++) { + IResource res = children[i].getResource(); + if (res != null && res.equals(resource)) { + celement = children[i]; + break; + } } } // BUG 36424: @@ -380,9 +383,12 @@ public class DeltaProcessor { elementDelta.addResourceDelta(delta); } if (parent instanceof CContainer) { - CElementInfo info = ((CContainer)parent).getElementInfo(); - if (info instanceof CContainerInfo) { - ((CContainerInfo)info).setNonCResources(null); + // if info not created yet no need to null NonCResources... + if (CModelManager.getDefault().peekAtInfo(parent) != null) { + CElementInfo info = ((CContainer)parent).getElementInfo(); + if (info instanceof CContainerInfo) { + ((CContainerInfo)info).setNonCResources(null); + } } } }