Protect resolverByModuleDescriptor collection with storageManager lock
Read access from isResolverFromModuleDescriptorComputed was exposed through DelegatingPackageFragmentProvider.
This commit is contained in:
@@ -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)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user