From cb596a44dbab57d5b4976dbcf771b58616c624cb Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Wed, 29 Jan 2020 11:03:58 +0000 Subject: [PATCH] #1725 CrashReport 3.1.3: StackOverflowError - use a file walk for extracting all zims under a directory --- .../kiwixmobile/core/utils/files/FileSearch.kt | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileSearch.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileSearch.kt index 16df7dae6..e93958567 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileSearch.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/files/FileSearch.kt @@ -71,17 +71,8 @@ class FileSearch @Inject constructor(private val context: Context) { private fun directoryRoots() = StorageDeviceUtils.getReadableStorage(context).map(StorageDevice::name) - private fun scanDirectory(directory: String): List = File(directory).listFiles() - ?.fold( - mutableListOf(), { acc, file -> - acc.apply { - if (file.isDirectory) { - addAll(scanDirectory(file.path)) - } else if (file.extension.isAny(*zimFileExtensions)) { - add(file) - } - } - }) ?: emptyList() + private fun scanDirectory(directory: String): List = + File(directory).walk().filter { it.extension.isAny(*zimFileExtensions) }.toList() } internal fun String.isAny(vararg suffixes: String) =