From 934ab5b341a4c2548041138893d8a0dd4c8d4aa6 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Sat, 15 Apr 2017 21:14:26 +0200 Subject: Make CompilerClassLoader#fixBridgeLoader synchronized This method could be called from multiple threads since sbt could run multiple `compile` task in parallel. --- sbt-bridge/src/xsbt/CompilerClassLoader.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sbt-bridge/src/xsbt/CompilerClassLoader.scala b/sbt-bridge/src/xsbt/CompilerClassLoader.scala index c0bdcb5e9..071141dcf 100644 --- a/sbt-bridge/src/xsbt/CompilerClassLoader.scala +++ b/sbt-bridge/src/xsbt/CompilerClassLoader.scala @@ -80,8 +80,9 @@ object CompilerClassLoader { * @param bridgeLoader The classloader that sbt uses to load the compiler bridge * @return A fixed classloader that works with dotty */ - def fixBridgeLoader(bridgeLoader: ClassLoader): ClassLoader = + def fixBridgeLoader(bridgeLoader: ClassLoader): ClassLoader = synchronized { fixedLoaderCache.getOrElseUpdate(bridgeLoader, computeFixedLoader(bridgeLoader)) + } private[this] def computeFixedLoader(bridgeLoader: ClassLoader) = bridgeLoader match { case bridgeLoader: URLClassLoader => -- cgit v1.2.3