diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt index cd69cb1f8..9e4ca829a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt @@ -19,7 +19,7 @@ internal class SevenZipPageLoader(file: File) : PageLoader() { return zip.getImages() .mapIndexed { i, entry -> ReaderPage(i).apply { - stream = { entry } + stream = { entry.copyOf().inputStream() } status = Page.State.READY } }.toList() diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt b/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt index 908d6219e..bc30d59a4 100644 --- a/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt +++ b/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt @@ -6,11 +6,11 @@ import tachiyomi.core.util.system.ImageUtil import java.io.InputStream object SevenZUtil { - fun SevenZFile.getImages(): Sequence { + fun SevenZFile.getImages(): Sequence { return generateSequence { runCatching { getNextEntry() }.getOrNull() } .filter { !it.isDirectory && ImageUtil.isImage(it.name) { getInputStream(it) } } .sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) } .map(::getInputStream) - .map { it.use(InputStream::readBytes).inputStream() } // ByteArrayInputStream + .map { it.use(InputStream::readBytes) } // ByteArray } } diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt index 18f3079dc..842111221 100644 --- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt +++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt @@ -345,7 +345,7 @@ actual class LocalSource( SevenZFile(format.file.toTempFile(context)).use { archive -> val entry = archive.getImages().firstOrNull() - entry?.let { coverManager.update(manga, it) } + entry?.let { coverManager.update(manga, it.inputStream()) } } } is Format.Rar -> {