From a23de8c1330347b2ac2783ba171cd3c0fe2c0be5 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Mon, 2 May 2011 07:52:10 +0000 Subject: [PATCH] Bug 343948 - Shared ast is exposed for concurrent usage --- .../cdt/internal/ui/text/CReconcilingStrategy.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconcilingStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconcilingStrategy.java index b8bc79f3474..4cf9d23184e 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconcilingStrategy.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CReconcilingStrategy.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2009 IBM Corporation and others. + * Copyright (c) 2005, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -30,6 +30,8 @@ import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.IWorkingCopyManager; +import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit; + public class CReconcilingStrategy implements IReconcilingStrategy, IReconcilingStrategyExtension { @@ -101,8 +103,11 @@ public class CReconcilingStrategy implements IReconcilingStrategy, IReconcilingS if (ast == null || canceled) { ((ICReconcilingListener)fEditor).reconciled(null, forced, fProgressMonitor); } else { - synchronized (ast) { + ((ASTTranslationUnit) ast).beginExclusiveAccess(); + try { ((ICReconcilingListener)fEditor).reconciled(ast, forced, fProgressMonitor); + } finally { + ((ASTTranslationUnit) ast).endExclusiveAccess(); } } if (canceled) {