Skip to content

Commit f81a31a

Browse files
committed
Filter non-existent paths from Jar's constructor.
Throw UncheckedIOException if you pass a empty/non-existant list.
1 parent 7e201e4 commit f81a31a

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

  • src/main/java/cpw/mods/jarhandling/impl

src/main/java/cpw/mods/jarhandling/impl/Jar.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,14 @@ static void add(final String name, final Status status, final CodeSigner[] signe
6969

7070
@SuppressWarnings("unchecked")
7171
public Jar(final Supplier<Manifest> defaultManifest, final Function<SecureJar, JarMetadata> metadataFunction, final BiPredicate<String, String> pathfilter, final Path... paths) {
72-
this.filesystem = UFSP.newFileSystem(pathfilter, paths);
72+
var validPaths = Arrays.stream(paths).filter(Files::exists).toArray(Path[]::new);
73+
if (validPaths.length == 0)
74+
throw new UncheckedIOException(new IOException("Invalid paths argument, contained no existing paths: " + Arrays.toString(paths)));
75+
this.filesystem = UFSP.newFileSystem(pathfilter, validPaths);
7376
try {
7477
Manifest mantmp = null;
75-
for (int x = paths.length - 1; x >= 0; x--) { // Walk backwards because this is what cpw wanted?
76-
var path = paths[x];
78+
for (int x = validPaths.length - 1; x >= 0; x--) { // Walk backwards because this is what cpw wanted?
79+
var path = validPaths[x];
7780
if (Files.isDirectory(path)) {
7881
var manfile = path.resolve(JarFile.MANIFEST_NAME);
7982
if (Files.exists(manfile)) {

0 commit comments

Comments
 (0)