Skip to content

Commit 308f167

Browse files
committed
Fix most leaks
1 parent 932d135 commit 308f167

37 files changed

Lines changed: 649 additions & 715 deletions

src/main/java/me/konloch/kontainer/io/DiskReader.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,17 @@ public synchronized static ArrayList<String> loadArrayList(String fileName,
2828
if (!map.containsKey(fileName)) {
2929
try {
3030
File file = new File(fileName);
31-
if (!file.exists()) // doesnt exist, return empty
31+
if (!file.exists()) // doesn't exist, return empty
3232
return array;
3333

34-
BufferedReader reader = new BufferedReader(new FileReader(file));
35-
String add;
34+
try (FileReader fr = new FileReader(file);
35+
BufferedReader reader = new BufferedReader(fr)) {
36+
String add;
3637

37-
while ((add = reader.readLine()) != null)
38-
array.add(add);
38+
while ((add = reader.readLine()) != null)
39+
array.add(add);
3940

40-
reader.close();
41+
}
4142

4243
if (cache)
4344
map.put(fileName, array);
@@ -58,14 +59,13 @@ public synchronized static ArrayList<String> loadArrayList(String fileName,
5859
public synchronized static String loadAsString(String fileName) throws Exception {
5960
StringBuilder s = new StringBuilder();
6061

61-
BufferedReader reader = new BufferedReader(new FileReader(fileName));
62-
63-
for (String add = reader.readLine(); add != null; add = reader.readLine()) {
64-
s.append(EncodeUtils.unicodeToString(add)).append(System.getProperty("line.separator"));
62+
try (FileReader fr = new FileReader(fileName);
63+
BufferedReader reader = new BufferedReader(fr)) {
64+
for (String add = reader.readLine(); add != null; add = reader.readLine()) {
65+
s.append(EncodeUtils.unicodeToString(add)).append(System.getProperty("line.separator"));
66+
}
6567
}
6668

67-
reader.close();
68-
6969
return s.toString();
7070
}
7171

@@ -80,13 +80,13 @@ public static String loadString(String fileName, int lineNumber,
8080
array = new ArrayList<>();
8181
File file = new File(fileName);
8282

83-
BufferedReader reader = new BufferedReader(new FileReader(file));
84-
String add;
85-
86-
while ((add = reader.readLine()) != null)
87-
array.add(add);
83+
try (FileReader fr = new FileReader(file);
84+
BufferedReader reader = new BufferedReader(fr)) {
85+
String add;
8886

89-
reader.close();
87+
while ((add = reader.readLine()) != null)
88+
array.add(add);
89+
}
9090

9191
if (cache)
9292
map.put(fileName, array);

src/main/java/me/konloch/kontainer/io/DiskWriter.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,16 @@ else if (math - 1 != count)
4848
public static synchronized void writeNewLine(String filename,
4949
byte[] fileContents, boolean debug) {
5050
new File(filename).getParentFile().mkdirs();
51-
PrintWriter writer = null;
5251
String original = filename;
5352
int counter = 0;
5453

5554
boolean saved = false;
5655
int failSafe = 0;
5756
while (!saved && failSafe++ <= 42069)
5857
{
59-
try {
60-
writer = new PrintWriter(new BufferedWriter(new FileWriter(
61-
filename, true)));
58+
try (FileWriter fr = new FileWriter(filename, true);
59+
BufferedWriter bw = new BufferedWriter(fr);
60+
PrintWriter writer = new PrintWriter(bw)) {
6261
writer.println(Arrays.toString(fileContents));
6362
if (debug)
6463
System.out.println("Saved " + filename + " to disk");
@@ -74,7 +73,6 @@ public static synchronized void writeNewLine(String filename,
7473
counter++;
7574
}
7675
}
77-
writer.close();
7876
}
7977

8078
/**
@@ -91,17 +89,16 @@ public static void writeNewLine(String filename, String lineToWrite)
9189
public static synchronized void writeNewLine(String filename,
9290
String lineToWrite, boolean debug) {
9391
new File(filename).getParentFile().mkdirs();
94-
PrintWriter writer = null;
9592
String original = filename;
9693
int counter = 0;
9794

9895
boolean saved = false;
9996
int failSafe = 0;
10097
while (!saved && failSafe++ <= 42069)
10198
{
102-
try {
103-
writer = new PrintWriter(new BufferedWriter(new FileWriter(
104-
filename, true)));
99+
try (FileWriter fr = new FileWriter(filename, true);
100+
BufferedWriter bw = new BufferedWriter(fr);
101+
PrintWriter writer = new PrintWriter(bw)) {
105102
writer.println(lineToWrite);
106103
if (debug)
107104
System.out.println("Saved " + filename + ">" + lineToWrite
@@ -118,7 +115,6 @@ public static synchronized void writeNewLine(String filename,
118115
counter++;
119116
}
120117
}
121-
writer.close();
122118
}
123119

124120
/**
@@ -143,7 +139,7 @@ public static synchronized void replaceFileBytes(String filename,
143139
int failSafe = 0;
144140
while (!saved && failSafe++ <= 42069)
145141
{
146-
try(FileOutputStream stream = new FileOutputStream(new File(filename)))
142+
try (FileOutputStream stream = new FileOutputStream(filename))
147143
{
148144
stream.write(fileContents);
149145
stream.flush();
@@ -177,17 +173,16 @@ public static synchronized void replaceFile(String filename,
177173
File f = new File(filename);
178174
if (f.exists())
179175
f.delete();
180-
PrintWriter writer = null;
181176
String original = filename;
182177
int counter = 0;
183178

184179
boolean saved = false;
185180
int failSafe = 0;
186181
while (!saved && failSafe++ <= 42069)
187182
{
188-
try {
189-
writer = new PrintWriter(new BufferedWriter(new FileWriter(
190-
filename, true)));
183+
try (FileWriter fr = new FileWriter(filename, true);
184+
BufferedWriter bw = new BufferedWriter(fr);
185+
PrintWriter writer = new PrintWriter(bw)) {
191186
writer.println(lineToWrite);
192187
if (debug)
193188
System.out.println("Saved " + filename + ">" + lineToWrite
@@ -204,7 +199,6 @@ public static synchronized void replaceFile(String filename,
204199
counter++;
205200
}
206201
}
207-
writer.close();
208202
}
209203

210204
}

src/main/java/me/konloch/kontainer/io/HTTPRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public int getStatusCode()
9797
}
9898

9999
/**
100-
* By default follow redirects are enabled
100+
* By default, follow redirects are enabled
101101
*/
102102
public void setFollowRedirects(boolean setFollowRedirects) {
103103
this.setFollowRedirects = setFollowRedirects;

src/main/java/the/bytecode/club/bytecodeviewer/api/BCV.java

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -102,34 +102,32 @@ public static List<Class<?>> loadClassesIntoClassLoader()
102102
try
103103
{
104104
File f = new File(tempDirectory + fs + MiscUtils.randomString(12) + "loaded_temp.jar");
105+
List<Class<?>> ret = new ArrayList<>();
105106

106107
JarUtils.saveAsJar(BCV.getLoadedClasses(), f.getAbsolutePath());
107-
JarFile jarFile = new JarFile("" + f.getAbsolutePath());
108-
109-
Enumeration<JarEntry> e = jarFile.entries();
110-
URL[] urls = {new URL("jar:file:" + "" + f.getAbsolutePath() + "!/")};
111-
112-
cl = URLClassLoader.newInstance(urls);
113-
List<Class<?>> ret = new ArrayList<>();
108+
try (JarFile jarFile = new JarFile("" + f.getAbsolutePath())) {
114109

115-
while (e.hasMoreElements())
116-
{
117-
JarEntry je = e.nextElement();
118-
119-
if (je.isDirectory() || !je.getName().endsWith(".class"))
120-
continue;
121-
122-
String className = je.getName().replace("/", ".").replace(".class", "");
123-
className = className.replace('/', '.');
124-
125-
try {
126-
ret.add(cl.loadClass(className));
127-
} catch (Exception classLoadException) {
128-
the.bytecode.club.bytecodeviewer.BytecodeViewer.handleException(classLoadException);
110+
Enumeration<JarEntry> e = jarFile.entries();
111+
URL[] urls = {new URL("jar:file:" + "" + f.getAbsolutePath() + "!/")};
112+
113+
cl = URLClassLoader.newInstance(urls);
114+
115+
while (e.hasMoreElements()) {
116+
JarEntry je = e.nextElement();
117+
118+
if (je.isDirectory() || !je.getName().endsWith(".class"))
119+
continue;
120+
121+
String className = je.getName().replace("/", ".").replace(".class", "");
122+
className = className.replace('/', '.');
123+
124+
try {
125+
ret.add(cl.loadClass(className));
126+
} catch (Exception classLoadException) {
127+
the.bytecode.club.bytecodeviewer.BytecodeViewer.handleException(classLoadException);
128+
}
129129
}
130130
}
131-
132-
jarFile.close();
133131

134132
return ret;
135133
} catch (Exception e) {

src/main/java/the/bytecode/club/bytecodeviewer/api/ExceptionUI.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package the.bytecode.club.bytecodeviewer.api;
22

33
import java.awt.*;
4+
import java.io.IOException;
45
import java.io.PrintWriter;
56
import java.io.StringWriter;
67
import javax.swing.JFrame;
@@ -93,11 +94,14 @@ private void setupException(Throwable error, String author)
9394
return;
9495
}
9596

96-
StringWriter sw = new StringWriter();
97-
error.printStackTrace(new PrintWriter(sw));
98-
error.printStackTrace();
99-
100-
setupFrame(sw.toString(), author);
97+
try (StringWriter sw = new StringWriter();
98+
PrintWriter pw = new PrintWriter(sw)) {
99+
error.printStackTrace(pw);
100+
error.printStackTrace();
101+
102+
setupFrame(sw.toString(), author);
103+
} catch (IOException ignored) {
104+
}
101105
}
102106

103107
/**

src/main/java/the/bytecode/club/bytecodeviewer/bootloader/Boot.java

Lines changed: 19 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,9 @@ private static void create(ILoader<?> loader, boolean clean) throws Exception {
121121
setState("Bytecode Viewer Boot Screen - Downloading " + fileName + "...");
122122
System.out.println("Downloading " + fileName);
123123

124-
InputStream is = null;
125-
FileOutputStream fos = null;
126-
try {
127-
is = new URL("https://github.com/Konloch/bytecode-viewer/raw/master/libs/" + fileName).openConnection().getInputStream();
128-
fos = new FileOutputStream(file);
124+
try (InputStream is = new URL("https://github.com/Konloch/bytecode-viewer/raw/master/libs/" + fileName)
125+
.openConnection().getInputStream();
126+
FileOutputStream fos = new FileOutputStream(file)) {
129127
System.out.println("Downloading from " + s);
130128
byte[] buffer = new byte[8192];
131129
int len;
@@ -143,19 +141,6 @@ private static void create(ILoader<?> loader, boolean clean) throws Exception {
143141
} else
144142
flag = false;
145143
}
146-
} finally {
147-
try {
148-
if (is != null) {
149-
is.close();
150-
}
151-
} finally {
152-
if (fos != null) {
153-
fos.flush();
154-
}
155-
if (fos != null) {
156-
fos.close();
157-
}
158-
}
159144
}
160145

161146
try {
@@ -233,7 +218,7 @@ private static void create(ILoader<?> loader, boolean clean) throws Exception {
233218
try {
234219
ExternalResource res = new EmptyExternalResource<>(f.toURI().toURL());
235220
loader.bind(res);
236-
System.out.println("Succesfully loaded " + f.getName());
221+
System.out.println("Successfully loaded " + f.getName());
237222
} catch (Exception e) {
238223
e.printStackTrace();
239224
f.delete();
@@ -314,24 +299,22 @@ public static void dropKrakatau() {
314299

315300
setState("Bytecode Viewer Boot Screen - Extracting Krakatau");
316301
System.out.println("Extracting Krakatau");
317-
try {
318302

319-
while (temp.exists())
320-
temp.delete();
321-
322-
InputStream is = BytecodeViewer.class.getClassLoader().getResourceAsStream("Krakatau-" + Constants.krakatauVersion + ".zip");
323-
FileOutputStream baos = new FileOutputStream(temp);
303+
while (temp.exists())
304+
temp.delete();
324305

306+
try (InputStream is = BytecodeViewer.class.getClassLoader().getResourceAsStream("Krakatau-"
307+
+ Constants.krakatauVersion + ".zip");
308+
FileOutputStream baos = new FileOutputStream(temp)) {
325309
int r;
326310
byte[] buffer = new byte[8192];
327311
while ((r = Objects.requireNonNull(is).read(buffer)) >= 0) {
328312
baos.write(buffer, 0, r);
329313
}
330314

331-
baos.close();
332315
ZipUtils.unzipFilesToPath(temp.getAbsolutePath(), krakatauDirectory.getAbsolutePath());
333316
temp.delete();
334-
System.out.println("Succesfully extracted Krakatau");
317+
System.out.println("Successfully extracted Krakatau");
335318
} catch (Exception e) {
336319
setState("Bytecode Viewer Boot Screen - ERROR, please contact @Konloch with your stacktrace.");
337320
BytecodeViewer.handleException(e);
@@ -349,25 +332,22 @@ public static void dropEnjarify() {
349332

350333
setState("Bytecode Viewer Boot Screen - Extracting Enjarify");
351334
System.out.println("Extracting Enjarify");
352-
353-
try {
354-
while (temp.exists())
355-
temp.delete();
356335

357-
InputStream is =
358-
BytecodeViewer.class.getClassLoader().getResourceAsStream("enjarify-" + Constants.enjarifyVersion + ".zip");
359-
FileOutputStream baos = new FileOutputStream(temp);
336+
while (temp.exists())
337+
temp.delete();
360338

339+
try (InputStream is = BytecodeViewer.class.getClassLoader().getResourceAsStream("enjarify-" +
340+
Constants.enjarifyVersion + ".zip");
341+
FileOutputStream baos = new FileOutputStream(temp)) {
361342
int r;
362343
byte[] buffer = new byte[8192];
363344
while ((r = Objects.requireNonNull(is).read(buffer)) >= 0) {
364345
baos.write(buffer, 0, r);
365346
}
366347

367-
baos.close();
368348
ZipUtils.unzipFilesToPath(temp.getAbsolutePath(), enjarifyDirectory.getAbsolutePath());
369349
temp.delete();
370-
System.out.println("Succesfully extracted Enjarify");
350+
System.out.println("Successfully extracted Enjarify");
371351
} catch (Exception e) {
372352
setState("Bytecode Viewer Boot Screen - ERROR, please contact @Konloch with your stacktrace.");
373353
BytecodeViewer.handleException(e);
@@ -388,11 +368,9 @@ public static void downloadZipsOnly() throws Exception {
388368
setState("Bytecode Viewer Boot Screen - Downloading " + fileName + "...");
389369
System.out.println("Downloading " + fileName);
390370

391-
InputStream is = null;
392-
FileOutputStream fos = null;
393-
try {
394-
is = new URL("https://github.com/Konloch/bytecode-viewer/raw/master/libs/" + fileName).openConnection().getInputStream();
395-
fos = new FileOutputStream(file);
371+
try (InputStream is = new URL("https://github.com/Konloch/bytecode-viewer/raw/master/libs/" + fileName)
372+
.openConnection().getInputStream();
373+
FileOutputStream fos = new FileOutputStream(file)) {
396374
System.out.println("Downloading from " + s);
397375
byte[] buffer = new byte[8192];
398376
int len;
@@ -412,19 +390,6 @@ public static void downloadZipsOnly() throws Exception {
412390
}
413391
} catch (Exception e) {
414392
e.printStackTrace();
415-
} finally {
416-
try {
417-
if (is != null) {
418-
is.close();
419-
}
420-
} finally {
421-
if (fos != null) {
422-
fos.flush();
423-
}
424-
if (fos != null) {
425-
fos.close();
426-
}
427-
}
428393
}
429394

430395
try {

0 commit comments

Comments
 (0)