From 7c70a5f8a471976a2b9a20f32018d979d90caa0d Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Thu, 23 May 2024 16:45:25 +0100 Subject: [PATCH] Fix handling of classes with no package in CachedJarProcessor. Closes #1121 --- .../loom/decompilers/cache/CachedJarProcessor.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/decompilers/cache/CachedJarProcessor.java b/src/main/java/net/fabricmc/loom/decompilers/cache/CachedJarProcessor.java index f78ff8b1..003726b6 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/cache/CachedJarProcessor.java +++ b/src/main/java/net/fabricmc/loom/decompilers/cache/CachedJarProcessor.java @@ -87,7 +87,7 @@ public record CachedJarProcessor(CachedFileStore fileStore, String b misses++; } else { final Path outputPath = existingSourcesFs.getPath(outputFileName); - Files.createDirectories(outputPath.getParent()); + createParentDirectories(outputPath); Files.writeString(outputPath, entryData.sources()); entry.copyTo(inputFs.getRoot(), existingClassesFs.getRoot()); @@ -226,7 +226,7 @@ public record CachedJarProcessor(CachedFileStore fileStore, String b final Path outputPath = outputFs.getRoot().resolve(existingPath.toString()); LOGGER.debug("Copying existing entry to output: {}", existingPath); - Files.createDirectories(outputPath.getParent()); + createParentDirectories(outputPath); Files.copy(existingPath, outputPath); } } @@ -300,4 +300,14 @@ public record CachedJarProcessor(CachedFileStore fileStore, String b */ public record FullWorkJob(Path incomplete, Path output, Map outputNameMap) implements WorkToDoJob { } + + private static void createParentDirectories(Path path) throws IOException { + final Path parent = path.getParent(); + + if (parent == null) { + return; + } + + Files.createDirectories(parent); + } }