From 2b7f9a4f655b1732e42c16456c4f33bff57c75c8 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Thu, 11 Dec 2008 14:35:41 +0000 Subject: [PATCH] Bug 257517 - [project model] Incorrect handling of project delete delta --- .../core/settings/model/CProjectDescriptionManager.java | 8 ++++++-- .../core/settings/model/ResourceChangeHandler.java | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 0d96d358f37..bb4ea049e27 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -478,8 +478,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { if (newContents != null) { ByteArrayOutputStream oldOut = write(oldEl); InputStream oldContents = new ByteArrayInputStream(oldOut.toByteArray()); - if(streamsMatch(newContents, oldContents)) - return null; + try { + if(streamsMatch(newContents, oldContents)) + return null; + } finally { + newContents.close(); + } } } } catch (CoreException e){ diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java index ad0bc1d89c8..2544e08a0a8 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/ResourceChangeHandler.java @@ -340,7 +340,7 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements if(!shouldVisit((IProject)projDelta.getResource())) continue; - if((projDelta.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED) + if((projDelta.getKind() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED) continue; IResourceDelta children[] = projDelta.getAffectedChildren(); @@ -354,9 +354,10 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements continue; //the .cproject file is changed - if((child.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED){ + if((child.getKind() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED){ //project file does not exist or corrupted, remove ((RcMoveHandler)handler).setProjectDescription(rc.getProject(), null); + continue; } try {