From 8006bc409b27b16b1e163a1790ba61f66a6c8487 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Wed, 19 Jan 2005 19:41:37 +0000 Subject: [PATCH] 2005-01-19 Alain Magloire PR 83151 * model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java --- core/org.eclipse.cdt.core/ChangeLog | 4 ++++ .../cdt/internal/core/model/DeltaProcessor.java | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 50b0a8a6e28..c213ec0c097 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,7 @@ +2005-01-19 Alain Magloire + PR 83151 + * model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java + 2005-01-18 David Inglis Fixed bug #82705 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 fa6b7c5ec33..e115b1f4615 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 @@ -7,7 +7,9 @@ package org.eclipse.cdt.internal.core.model; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.model.IArchive; import org.eclipse.cdt.core.model.IArchiveContainer; +import org.eclipse.cdt.core.model.IBinary; import org.eclipse.cdt.core.model.IBinaryContainer; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElementDelta; @@ -312,7 +314,16 @@ public class DeltaProcessor { * */ protected void elementChanged(ICElement element, IResourceDelta delta) { - if (element instanceof Openable) { + // For Binary/Archive We can not call close() to the work + // closing will remove the element from the {Binary,Archive}Container + // We nee to clear the cache explicitely + if (element instanceof IBinary || element instanceof IArchive) { + CModelManager factory = CModelManager.getDefault(); + CElementInfo pinfo = (CElementInfo)factory.peekAtInfo(element); + if (pinfo != null) { + factory.removeInfo(element); + } + } else if (element instanceof Openable) { close((Openable)element); } fCurrentDelta.changed(element, ICElementDelta.F_CONTENT);