From e1de57c98c96db4910f4f777a2d056342b684333 Mon Sep 17 00:00:00 2001 From: Dude so hot Date: Tue, 15 Oct 2024 12:17:50 +0800 Subject: [PATCH] Ensure QrCodeInterceptor cache thread-safe --- .../main/kotlin/com/hippo/ehviewer/coil/QrCodeInterceptor.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/coil/QrCodeInterceptor.kt b/app/src/main/kotlin/com/hippo/ehviewer/coil/QrCodeInterceptor.kt index 182f72c92..02aabb2dc 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/coil/QrCodeInterceptor.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/coil/QrCodeInterceptor.kt @@ -33,7 +33,7 @@ object QrCodeInterceptor : Interceptor { if (image is BitmapImageWithExtraInfo) { fun compute() = runSuspendCatching { hasQrCode(image.image.bitmap) }.onFailure { logcat(it) }.getOrThrow() val hasQrCode = when (val key = result.memoryCacheKey) { - is MemoryCache.Key -> cache[key] ?: compute().also { cache[key] = it } + is MemoryCache.Key -> synchronized(cache) { cache[key] } ?: compute().also { synchronized(cache) { cache[key] = it } } null -> compute() } val new = image.copy(hasQrCode = hasQrCode)