Protect resolverByModuleDescriptor collection with storageManager lock

Read access from isResolverFromModuleDescriptorComputed was exposed through
DelegatingPackageFragmentProvider.
This commit is contained in:
Nikolay Krasko
2018-03-14 19:01:45 +03:00
parent 9145470f79
commit 03459eb808
@@ -140,6 +140,7 @@ class ResolverForProjectImpl<M : ModuleInfo>(
) )
} }
// Protected by ("projectContext.storageManager.lock")
private val resolverByModuleDescriptor = mutableMapOf<ModuleDescriptor, ResolverForModule>() private val resolverByModuleDescriptor = mutableMapOf<ModuleDescriptor, ResolverForModule>()
override val allModules: Collection<M> by lazy { override val allModules: Collection<M> by lazy {
@@ -174,7 +175,9 @@ class ResolverForProjectImpl<M : ModuleInfo>(
} }
internal fun isResolverForModuleDescriptorComputed(descriptor: ModuleDescriptor) = internal fun isResolverForModuleDescriptorComputed(descriptor: ModuleDescriptor) =
descriptor in resolverByModuleDescriptor projectContext.storageManager.compute {
descriptor in resolverByModuleDescriptor
}
override fun descriptorForModule(moduleInfo: M): ModuleDescriptorImpl { override fun descriptorForModule(moduleInfo: M): ModuleDescriptorImpl {
if (!isCorrectModuleInfo(moduleInfo)) { if (!isCorrectModuleInfo(moduleInfo)) {