From 40d873551fb4aa6f118e727d54d6ed064ebae368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 10 Apr 2014 15:11:00 +0200 Subject: [PATCH] A bit of extra cursor safety, avoid the last missing .close() --- src/org/fdroid/fdroid/data/RepoProvider.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/org/fdroid/fdroid/data/RepoProvider.java b/src/org/fdroid/fdroid/data/RepoProvider.java index 148ebfb09..78c9329db 100644 --- a/src/org/fdroid/fdroid/data/RepoProvider.java +++ b/src/org/fdroid/fdroid/data/RepoProvider.java @@ -31,8 +31,10 @@ public class RepoProvider extends FDroidProvider { Cursor cursor = resolver.query(uri, projection, null, null, null); Repo repo = null; if (cursor != null) { - cursor.moveToFirst(); - repo = new Repo(cursor); + if (cursor.getCount() > 0) { + cursor.moveToFirst(); + repo = new Repo(cursor); + } cursor.close(); } return repo; @@ -73,12 +75,15 @@ public class RepoProvider extends FDroidProvider { } private static List cursorToList(Cursor cursor) { - List repos = new ArrayList(); + int knownRepoCount = cursor != null ? cursor.getCount() : 0; + List repos = new ArrayList(knownRepoCount); if (cursor != null) { - cursor.moveToFirst(); - while (!cursor.isAfterLast()) { - repos.add(new Repo(cursor)); - cursor.moveToNext(); + if (knownRepoCount > 0) { + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + repos.add(new Repo(cursor)); + cursor.moveToNext(); + } } cursor.close(); }