catch cursor window allocation exception

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java | 14 
1 file changed, 10 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java 🔗

@@ -647,17 +647,23 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 		db.insert(RESOLVER_RESULTS_TABLENAME, null, contentValues);
 	}
 
-	public Resolver.Result findResolverResult(String domain) {
+	public synchronized Resolver.Result findResolverResult(String domain) {
 		SQLiteDatabase db = this.getReadableDatabase();
 		String where = Resolver.Result.DOMAIN + "=?";
 		String[] whereArgs = {domain};
 		final Cursor cursor = db.query(RESOLVER_RESULTS_TABLENAME, null, where, whereArgs, null, null, null);
 		Resolver.Result result = null;
 		if (cursor != null) {
-			if (cursor.moveToFirst()) {
-				result = Resolver.Result.fromCursor(cursor);
+			try {
+				if (cursor.moveToFirst()) {
+					result = Resolver.Result.fromCursor(cursor);
+				}
+			} catch (Exception e ) {
+				Log.d(Config.LOGTAG,"unable to find cached resolver result in database "+e.getMessage());
+				return null;
+			} finally {
+				cursor.close();
 			}
-			cursor.close();
 		}
 		return result;
 	}