Skip to content

Commit 220edca

Browse files
committed
ported fix of leaks in loadJSONObject and loadJSONArray
1 parent d9cfe6e commit 220edca

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

core/src/processing/core/PApplet.java

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4276,12 +4276,28 @@ public JSONObject parseJSONObject(String input) {
42764276
* @see PApplet#saveJSONArray(JSONArray, String)
42774277
*/
42784278
public JSONObject loadJSONObject(String filename) {
4279-
return new JSONObject(createReader(filename));
4279+
// can't pass of createReader() to the constructor b/c of resource leak
4280+
BufferedReader reader = createReader(filename);
4281+
JSONObject outgoing = new JSONObject(reader);
4282+
try {
4283+
reader.close();
4284+
} catch (IOException e) { // not sure what would cause this
4285+
e.printStackTrace();
4286+
}
4287+
return outgoing;
42804288
}
42814289

42824290

42834291
static public JSONObject loadJSONObject(File file) {
4284-
return new JSONObject(createReader(file));
4292+
// can't pass of createReader() to the constructor b/c of resource leak
4293+
BufferedReader reader = createReader(file);
4294+
JSONObject outgoing = new JSONObject(reader);
4295+
try {
4296+
reader.close();
4297+
} catch (IOException e) { // not sure what would cause this
4298+
e.printStackTrace();
4299+
}
4300+
return outgoing;
42854301
}
42864302

42874303

@@ -4327,12 +4343,28 @@ public JSONArray parseJSONArray(String input) {
43274343
* @see PApplet#saveJSONArray(JSONArray, String)
43284344
*/
43294345
public JSONArray loadJSONArray(String filename) {
4330-
return new JSONArray(createReader(filename));
4346+
// can't pass of createReader() to the constructor b/c of resource leak
4347+
BufferedReader reader = createReader(filename);
4348+
JSONArray outgoing = new JSONArray(reader);
4349+
try {
4350+
reader.close();
4351+
} catch (IOException e) { // not sure what would cause this
4352+
e.printStackTrace();
4353+
}
4354+
return outgoing;
43314355
}
43324356

43334357

43344358
static public JSONArray loadJSONArray(File file) {
4335-
return new JSONArray(createReader(file));
4359+
// can't pass of createReader() to the constructor b/c of resource leak
4360+
BufferedReader reader = createReader(file);
4361+
JSONArray outgoing = new JSONArray(reader);
4362+
try {
4363+
reader.close();
4364+
} catch (IOException e) { // not sure what would cause this
4365+
e.printStackTrace();
4366+
}
4367+
return outgoing;
43364368
}
43374369

43384370

0 commit comments

Comments
 (0)