Fix stream leak (#8205)

This commit is contained in:
Vincent Welbourne
2026-01-06 04:31:00 -05:00
committed by GitHub
parent e024bd9fc0
commit 07fa1c7530
4 changed files with 50 additions and 41 deletions

View File

@ -30,15 +30,18 @@ public class DevelopersFragment extends ListFragment {
developersLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> {
developers.clear();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("developers.csv"), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
developers.add(new SimpleIconListAdapter.ListItem(info[0], info[2],
"https://avatars2.githubusercontent.com/u/" + info[1] + "?s=60&v=4"));
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("developers.csv"), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
developers.add(new SimpleIconListAdapter.ListItem(info[0], info[2],
"https://avatars2.githubusercontent.com/u/" + info[1] + "?s=60&v=4"));
}
emitter.onSuccess(developers);
} catch (Exception e) {
emitter.onError(e);
}
emitter.onSuccess(developers);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -46,21 +46,24 @@ public class LicensesFragment extends ListFragment {
licensesLoader = Single.create((SingleOnSubscribe<ArrayList<LicenseItem>>) emitter -> {
licenses.clear();
InputStream stream = getContext().getAssets().open("licenses.xml");
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
NodeList libraryList = docBuilder.parse(stream).getElementsByTagName("library");
for (int i = 0; i < libraryList.getLength(); i++) {
NamedNodeMap lib = libraryList.item(i).getAttributes();
licenses.add(new LicenseItem(
lib.getNamedItem("name").getTextContent(),
String.format("By %s, %s license",
lib.getNamedItem("author").getTextContent(),
lib.getNamedItem("license").getTextContent()),
null,
lib.getNamedItem("website").getTextContent(),
lib.getNamedItem("licenseText").getTextContent()));
try (InputStream stream = getContext().getAssets().open("licenses.xml")) {
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
NodeList libraryList = docBuilder.parse(stream).getElementsByTagName("library");
for (int i = 0; i < libraryList.getLength(); i++) {
NamedNodeMap lib = libraryList.item(i).getAttributes();
licenses.add(new LicenseItem(
lib.getNamedItem("name").getTextContent(),
String.format("By %s, %s license",
lib.getNamedItem("author").getTextContent(),
lib.getNamedItem("license").getTextContent()),
null,
lib.getNamedItem("website").getTextContent(),
lib.getNamedItem("licenseText").getTextContent()));
}
emitter.onSuccess(licenses);
} catch (Exception e) {
emitter.onError(e);
}
emitter.onSuccess(licenses);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -68,7 +71,6 @@ public class LicensesFragment extends ListFragment {
developers -> setListAdapter(new SimpleIconListAdapter<LicenseItem>(getContext(), developers)),
error -> Toast.makeText(getContext(), error.getMessage(), Toast.LENGTH_LONG).show()
);
}
private static class LicenseItem extends SimpleIconListAdapter.ListItem {
@ -100,9 +102,8 @@ public class LicensesFragment extends ListFragment {
}
private void showLicenseText(String licenseTextFile) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open(licenseTextFile), "UTF-8"));
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open(licenseTextFile), "UTF-8"))) {
StringBuilder licenseText = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {

View File

@ -31,14 +31,17 @@ public class SpecialThanksFragment extends ListFragment {
translatorsLoader = Single.create((SingleOnSubscribe<ArrayList<SpecialMemberItem>>) emitter -> {
specialMembers.clear();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("special_thanks.csv"), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
specialMembers.add(new SpecialMemberItem(info[0], info[1], info[2], info[3]));
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("special_thanks.csv"), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
specialMembers.add(new SpecialMemberItem(info[0], info[1], info[2], info[3]));
}
emitter.onSuccess(specialMembers);
} catch (Exception e) {
emitter.onError(e);
}
emitter.onSuccess(specialMembers);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -27,14 +27,17 @@ public class TranslatorsFragment extends ListFragment {
translatorsLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> {
ArrayList<SimpleIconListAdapter.ListItem> translators = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("translators.csv"), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
translators.add(new SimpleIconListAdapter.ListItem(info[0], info[1], null));
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("translators.csv"), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
translators.add(new SimpleIconListAdapter.ListItem(info[0], info[1], null));
}
emitter.onSuccess(translators);
} catch (Exception e) {
emitter.onError(e);
}
emitter.onSuccess(translators);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -42,7 +45,6 @@ public class TranslatorsFragment extends ListFragment {
translators -> setListAdapter(new SimpleIconListAdapter<>(getContext(), translators)),
error -> Toast.makeText(getContext(), error.getMessage(), Toast.LENGTH_LONG).show()
);
}
@Override