A bit of extra cursor safety, avoid the last missing .close()

This commit is contained in:
Daniel Martí 2014-04-10 15:11:00 +02:00
parent f04ac83ec9
commit 40d873551f

View File

@ -31,8 +31,10 @@ public class RepoProvider extends FDroidProvider {
Cursor cursor = resolver.query(uri, projection, null, null, null); Cursor cursor = resolver.query(uri, projection, null, null, null);
Repo repo = null; Repo repo = null;
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); if (cursor.getCount() > 0) {
repo = new Repo(cursor); cursor.moveToFirst();
repo = new Repo(cursor);
}
cursor.close(); cursor.close();
} }
return repo; return repo;
@ -73,12 +75,15 @@ public class RepoProvider extends FDroidProvider {
} }
private static List<Repo> cursorToList(Cursor cursor) { private static List<Repo> cursorToList(Cursor cursor) {
List<Repo> repos = new ArrayList<Repo>(); int knownRepoCount = cursor != null ? cursor.getCount() : 0;
List<Repo> repos = new ArrayList<Repo>(knownRepoCount);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); if (knownRepoCount > 0) {
while (!cursor.isAfterLast()) { cursor.moveToFirst();
repos.add(new Repo(cursor)); while (!cursor.isAfterLast()) {
cursor.moveToNext(); repos.add(new Repo(cursor));
cursor.moveToNext();
}
} }
cursor.close(); cursor.close();
} }