From 072e95280de1774f89365885925031463a4b7fa8 Mon Sep 17 00:00:00 2001 From: tom79 Date: Sat, 17 Aug 2019 14:34:33 +0200 Subject: [PATCH] Fix unclosed cursors --- .../android/sqlite/BoostScheduleDAO.java | 8 +++-- .../android/sqlite/CustomEmojiDAO.java | 8 +++-- .../android/sqlite/DomainBlockDAO.java | 4 ++- .../android/sqlite/PeertubeFavoritesDAO.java | 4 ++- .../android/sqlite/StatusCacheDAO.java | 32 ++++++++++++++----- .../android/sqlite/StatusStoredDAO.java | 8 +++-- .../fedilab/android/sqlite/TagsCacheDAO.java | 4 ++- .../fedilab/android/sqlite/TempMuteDAO.java | 4 ++- .../fedilab/android/sqlite/TimelinesDAO.java | 8 +++-- 9 files changed, 60 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/sqlite/BoostScheduleDAO.java b/app/src/main/java/app/fedilab/android/sqlite/BoostScheduleDAO.java index 3b8d7b241..90bc99f0c 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/BoostScheduleDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/BoostScheduleDAO.java @@ -222,8 +222,10 @@ public class BoostScheduleDAO { */ private StoredStatus cursorToStoredStatus(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); //New user @@ -255,8 +257,10 @@ public class BoostScheduleDAO { */ private List cursorToListStatuses(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List storedStatuses = new ArrayList<>(); while (c.moveToNext() ) { //Restore the status diff --git a/app/src/main/java/app/fedilab/android/sqlite/CustomEmojiDAO.java b/app/src/main/java/app/fedilab/android/sqlite/CustomEmojiDAO.java index b7f106c0d..ecaf2f445 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/CustomEmojiDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/CustomEmojiDAO.java @@ -166,8 +166,10 @@ public class CustomEmojiDAO { */ private Emojis cursorToEmoji(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); //New user @@ -188,8 +190,10 @@ public class CustomEmojiDAO { */ private List cursorToListEmojis(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List emojis = new ArrayList<>(); while (c.moveToNext() ) { //Restore the emojis diff --git a/app/src/main/java/app/fedilab/android/sqlite/DomainBlockDAO.java b/app/src/main/java/app/fedilab/android/sqlite/DomainBlockDAO.java index 20adc8479..6a7e5a664 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/DomainBlockDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/DomainBlockDAO.java @@ -100,8 +100,10 @@ public class DomainBlockDAO { */ private List cursorToDomain(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List domains = new ArrayList<>(); while (c.moveToNext() ) { domains.add(c.getString(c.getColumnIndex(Sqlite.COL_DOMAIN))); diff --git a/app/src/main/java/app/fedilab/android/sqlite/PeertubeFavoritesDAO.java b/app/src/main/java/app/fedilab/android/sqlite/PeertubeFavoritesDAO.java index cf667e32f..d13bdaeeb 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/PeertubeFavoritesDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/PeertubeFavoritesDAO.java @@ -126,8 +126,10 @@ public class PeertubeFavoritesDAO { */ private List cursorToListPeertube(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List peertubes = new ArrayList<>(); while (c.moveToNext() ) { //Restore cached status diff --git a/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java b/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java index de9967c31..22b3b6048 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/StatusCacheDAO.java @@ -339,8 +339,10 @@ public class StatusCacheDAO { try { Cursor c = db.query(Sqlite.TABLE_STATUSES_CACHE, null, Sqlite.COL_CACHED_ACTION + " = '" + cacheType+ "' AND " + Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, Sqlite.COL_DATE_BACKUP + " DESC", "1"); //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); String date = c.getString(c.getColumnIndex(Sqlite.COL_DATE_BACKUP)); @@ -362,8 +364,10 @@ public class StatusCacheDAO { try { Cursor c = db.query(Sqlite.TABLE_STATUSES_CACHE, null, Sqlite.COL_CACHED_ACTION + " = '" + cacheType+ "' AND " + Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, Sqlite.COL_CREATED_AT + " ASC", "1"); //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); String date = c.getString(c.getColumnIndex(Sqlite.COL_CREATED_AT)); @@ -385,8 +389,10 @@ public class StatusCacheDAO { try { Cursor c = db.query(Sqlite.TABLE_STATUSES_CACHE, null, Sqlite.COL_CACHED_ACTION + " = '" + cacheType+ "' AND " + Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, Sqlite.COL_CREATED_AT + " DESC", "1"); //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); String date = c.getString(c.getColumnIndex(Sqlite.COL_CREATED_AT)); @@ -408,8 +414,10 @@ public class StatusCacheDAO { try { Cursor c = db.query(Sqlite.TABLE_STATUSES_CACHE, null, Sqlite.COL_CACHED_ACTION + " = '" + cacheType+ "' AND " + Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, Sqlite.COL_STATUS_ID + " DESC", "1"); //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); String last_id = c.getString(c.getColumnIndex(Sqlite.COL_STATUS_ID)); @@ -433,8 +441,10 @@ public class StatusCacheDAO { try { Cursor c = db.query(Sqlite.TABLE_STATUSES_CACHE, null, Sqlite.COL_CACHED_ACTION + " = '" + cacheType+ "' AND " + Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, Sqlite.COL_CREATED_AT + " DESC", "1"); //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); Date last_id = Helper.stringToDate(context, c.getString(c.getColumnIndex(Sqlite.COL_CREATED_AT))); @@ -696,8 +706,10 @@ public class StatusCacheDAO { */ private Status cursorToStoredStatus(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); //New status @@ -740,8 +752,10 @@ public class StatusCacheDAO { */ private List cursorToListStatuses(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List statuses = new ArrayList<>(); while (c.moveToNext() ) { //Restore cached status @@ -787,8 +801,10 @@ public class StatusCacheDAO { */ private List cursorToListStatusesId(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List statusesId = new ArrayList<>(); while (c.moveToNext() ) { //Restore cached status diff --git a/app/src/main/java/app/fedilab/android/sqlite/StatusStoredDAO.java b/app/src/main/java/app/fedilab/android/sqlite/StatusStoredDAO.java index 6a55b4f16..127a2e7c1 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/StatusStoredDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/StatusStoredDAO.java @@ -296,8 +296,10 @@ public class StatusStoredDAO { */ private StoredStatus cursorToStoredStatus(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); //New user @@ -331,8 +333,10 @@ public class StatusStoredDAO { */ private List cursorToListStatuses(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List storedStatuses = new ArrayList<>(); while (c.moveToNext() ) { //Restore the status diff --git a/app/src/main/java/app/fedilab/android/sqlite/TagsCacheDAO.java b/app/src/main/java/app/fedilab/android/sqlite/TagsCacheDAO.java index 88a14760e..20608a19f 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/TagsCacheDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/TagsCacheDAO.java @@ -118,8 +118,10 @@ public class TagsCacheDAO { */ private List cursorToTag(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List tags = new ArrayList<>(); while (c.moveToNext() ) { tags.add(c.getString(c.getColumnIndex(Sqlite.COL_TAGS))); diff --git a/app/src/main/java/app/fedilab/android/sqlite/TempMuteDAO.java b/app/src/main/java/app/fedilab/android/sqlite/TempMuteDAO.java index 580f7b1ba..1ec6f027b 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/TempMuteDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/TempMuteDAO.java @@ -154,8 +154,10 @@ public class TempMuteDAO { */ private String cursorToDate(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } c.moveToNext(); String date = c.getString(c.getColumnIndex(Sqlite.COL_DATE_END)); //Close the cursor diff --git a/app/src/main/java/app/fedilab/android/sqlite/TimelinesDAO.java b/app/src/main/java/app/fedilab/android/sqlite/TimelinesDAO.java index 32cb6fece..559ff2ee0 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/TimelinesDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/TimelinesDAO.java @@ -160,8 +160,10 @@ public class TimelinesDAO { */ private ManageTimelines cursorToTimeline(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } //Take the first element c.moveToFirst(); //New timeline @@ -190,8 +192,10 @@ public class TimelinesDAO { */ private List cursorToTimelines(Cursor c){ //No element found - if (c.getCount() == 0) + if (c.getCount() == 0) { + c.close(); return null; + } List remoteInstances = new ArrayList<>(); while (c.moveToNext() ) {