diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index b8e3253c0bd..dcd7df9f85f 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,7 @@ +2005-02-16 Alain Magloire + Fix for PR 85633, The IBinary info were not remove in the cache. + * model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java + 2004-03-04 Peter Faltaous Add e_machine values for X86_64. getAttributes(): Add cases for X86_64. 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 cefdc56a604..461c9e22eaa 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 @@ -5,6 +5,8 @@ package org.eclipse.cdt.internal.core.model; * All Rights Reserved. */ +import java.util.ArrayList; + import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.IArchive; @@ -306,6 +308,25 @@ public class DeltaProcessor { } } + /** + * This is use to remove the cache info for IArchive and IBinary + * We can use IBinary.close() doing this will remove the binary + * for the virtual binary/archive containers. + * @param celement + */ + private void closeBinary(ICElement celement) { + CModelManager factory = CModelManager.getDefault(); + CElementInfo pinfo = (CElementInfo)factory.peekAtInfo(celement); + if (pinfo != null) { + ArrayList list = new ArrayList(); + ICElement[] celems = pinfo.getChildren(); + for (int i = 0; i < celems.length; ++i) { + closeBinary(celems[i]); + } + factory.removeInfo(celement); + } + } + /** * Generic processing for elements with changed contents: