From b0cedbe5cc753bf7f9a3f7d2cd7a89c66b953c26 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Tue, 4 May 2004 20:27:04 +0000 Subject: [PATCH] fixed deadlock in binary tests --- .../cdt/internal/core/CDescriptorManager.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java index 16a859b6234..eaf13560ba4 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java @@ -337,25 +337,26 @@ public class CDescriptorManager implements ICDescriptorManager, IResourceChangeL public void runDescriptorOperation(IProject project, ICDescriptorOperation op, IProgressMonitor monitor) throws CoreException { ICDescriptor descriptor = getDescriptor(project); + CDescriptorEvent event = null; synchronized (descriptor) { beginOperation(descriptor); try { op.execute(descriptor, monitor); } finally { - endOperation(descriptor); + event = endOperation(descriptor); } } + if (event != null) { + fireEvent(event); + } } private void beginOperation(ICDescriptor descriptor) { fOperationMap.put(descriptor, null); } - private void endOperation(ICDescriptor descriptor) { - CDescriptorEvent event = (CDescriptorEvent) fOperationMap.remove(descriptor); - if (event != null) { - fireEvent(event); - } + private CDescriptorEvent endOperation(ICDescriptor descriptor) { + return (CDescriptorEvent) fOperationMap.remove(descriptor); } /*