diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/PathCanonicalizationStrategy.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/PathCanonicalizationStrategy.java index 2ac47ca4ba9..e592fb95ab6 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/PathCanonicalizationStrategy.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/resources/PathCanonicalizationStrategy.java @@ -20,14 +20,14 @@ import java.io.IOException; * symbolic links is undesirable. The default is to use File.getCanonicalPath. */ public abstract class PathCanonicalizationStrategy { - private static PathCanonicalizationStrategy instance; + private static volatile PathCanonicalizationStrategy instance; static { setPathCanonicalization(true); } public static String getCanonicalPath(File file) { - return getInstance().getCanonicalPathInternal(file); + return instance.getCanonicalPathInternal(file); } /** @@ -38,7 +38,7 @@ public abstract class PathCanonicalizationStrategy { * @param canonicalize true to use File.getCanonicalPath, false * to use File.getAbsolutePath. */ - public static synchronized void setPathCanonicalization(boolean canonicalize) { + public static void setPathCanonicalization(boolean canonicalize) { if (canonicalize) { instance = new PathCanonicalizationStrategy() { @Override @@ -60,9 +60,5 @@ public abstract class PathCanonicalizationStrategy { } } - private static synchronized PathCanonicalizationStrategy getInstance() { - return instance; - } - protected abstract String getCanonicalPathInternal(File file); }