From ca74897b24e24681e05ed35d13cf7a68bc924673 Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Thu, 6 Jan 2011 16:35:37 -0800 Subject: [PATCH] in GB requery() didn't throw exceptions (mostly). replicate that in HC bug:3302851 Change-Id: I56e0bd178b200472cb1dbcbd2e80b844690b8964 --- .../android/database/sqlite/SQLiteCursor.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/core/java/android/database/sqlite/SQLiteCursor.java b/core/java/android/database/sqlite/SQLiteCursor.java index 5a6c667820282..26a14403a5e3c 100644 --- a/core/java/android/database/sqlite/SQLiteCursor.java +++ b/core/java/android/database/sqlite/SQLiteCursor.java @@ -407,15 +407,29 @@ public class SQLiteCursor extends AbstractWindowedCursor { mWindow.clear(); } mPos = -1; - SQLiteDatabase db = mQuery.mDatabase.getDatabaseHandle(mQuery.mSql); + SQLiteDatabase db = null; + try { + db = mQuery.mDatabase.getDatabaseHandle(mQuery.mSql); + } catch (IllegalStateException e) { + // for backwards compatibility, just return false + return false; + } if (!db.equals(mQuery.mDatabase)) { // since we need to use a different database connection handle, // re-compile the query - db.lock(); + try { + db.lock(); + } catch (IllegalStateException e) { + // for backwards compatibility, just return false + return false; + } try { // close the old mQuery object and open a new one mQuery.close(); mQuery = new SQLiteQuery(db, mQuery); + } catch (IllegalStateException e) { + // for backwards compatibility, just return false + return false; } finally { db.unlock(); } @@ -427,6 +441,9 @@ public class SQLiteCursor extends AbstractWindowedCursor { queryThreadLock(); try { mQuery.requery(); + } catch (IllegalStateException e) { + // for backwards compatibility, just return false + return false; } finally { queryThreadUnlock(); } @@ -437,7 +454,12 @@ public class SQLiteCursor extends AbstractWindowedCursor { Log.v(TAG, "--- Requery()ed cursor " + this + ": " + mQuery); } - boolean result = super.requery(); + boolean result = false; + try { + result = super.requery(); + } catch (IllegalStateException e) { + // for backwards compatibility, just return false + } if (Config.LOGV) { long timeEnd = System.currentTimeMillis(); Log.v(TAG, "requery (" + (timeEnd - timeStart) + " ms): " + mDriver.toString());