Skip to content

Commit 1c855ec

Browse files
committed
fix: Fix file handle leak from 3x zip file logic backport
1 parent 235e87a commit 1c855ec

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/main/java/me/coley/recaf/workspace/JarResource.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,20 @@ protected Map<String, byte[]> loadClasses() throws IOException {
6363
// This may not always be ideal, but this way has one major bonus. It totally ignores CRC validity.
6464
// It also ignores a few other zip entry values.
6565
// Since somebody can intentionally write bogus data there to crash "ZipInputStream" this way works.
66-
ZipFile zf = new ZipFile(getPath().toString());
67-
Enumeration<? extends ZipEntry> entries = zf.entries();
68-
while (entries.hasMoreElements()) {
69-
ZipEntry entry = entries.nextElement();
66+
try (ZipFile zf = new ZipFile(getPath().toString())) {
67+
Enumeration<? extends ZipEntry> entries = zf.entries();
68+
while (entries.hasMoreElements()) {
69+
ZipEntry entry = entries.nextElement();
7070

71-
if (shouldSkip(entry.getName()))
72-
continue;
73-
if (!loader.isValidClassEntry(entry))
74-
continue;
71+
if (shouldSkip(entry.getName()))
72+
continue;
73+
if (!loader.isValidClassEntry(entry))
74+
continue;
7575

76-
InputStream zis = zf.getInputStream(entry);
77-
byte[] in = IOUtil.toByteArray(zis);
78-
loader.onClass(entry.getName(), in);
76+
InputStream zis = zf.getInputStream(entry);
77+
byte[] in = IOUtil.toByteArray(zis);
78+
loader.onClass(entry.getName(), in);
79+
}
7980
}
8081
}
8182
}

0 commit comments

Comments
 (0)