From 2f146f96f2ee60456fdacc9fbe19e1fca89e9736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20F=C3=B6rster?= Date: Sat, 30 Mar 2019 20:23:15 +0100 Subject: [PATCH] Fix resolution of MiKTeX files --- src/main/kotlin/texlab/resolver/LatexResolver.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/texlab/resolver/LatexResolver.kt b/src/main/kotlin/texlab/resolver/LatexResolver.kt index 9eda4aa3..ddc23da8 100644 --- a/src/main/kotlin/texlab/resolver/LatexResolver.kt +++ b/src/main/kotlin/texlab/resolver/LatexResolver.kt @@ -99,7 +99,7 @@ class LatexResolver(val filesByName: Map) { .filter { it.extension.matches(Regex("""fndb-\d+""")) } .map { ByteBuffer.wrap(Files.readAllBytes(it.toPath())) } .map { it.order(ByteOrder.LITTLE_ENDIAN) } - .flatMap { parseMiktexDatabase(it) } + .flatMap { parseMiktexDatabase(rootDirectories, it) } } else { emptySequence() } @@ -131,7 +131,8 @@ class LatexResolver(val filesByName: Map) { } } - private fun parseMiktexDatabase(buffer: ByteBuffer): Sequence = sequence { + private fun parseMiktexDatabase(rootDirectories: List, + buffer: ByteBuffer): Sequence = sequence { if (buffer.getInt(0) != FNDB_SIGNATURE) { val error = TexDistributionError.INVALID_DISTRIBUTION throw InvalidTexDistributionException(error) @@ -144,8 +145,12 @@ class LatexResolver(val filesByName: Map) { val offset = tableAddress + i * FNDB_ENTRY_SIZE val fileName = buffer.getString(buffer.getInt(offset)) val directory = buffer.getString(buffer.getInt(offset + FNDB_WORD_SIZE)) - val file = Paths.get(directory, fileName).toFile() - yield(file) + rootDirectories.forEach { + val file = Paths.get(it.toString(), directory, fileName).toFile() + if (file.exists()) { + yield(file) + } + } } } }