Return empty result when EmailProvider query fails
In developer mode we still crash for all errors except for malformed MATCH expressions (which are rather easy to generate given that we pass user input to SQLite).
This commit is contained in:
parent
bedf26d19b
commit
7992be9068
1 changed files with 17 additions and 1 deletions
|
@ -1,10 +1,14 @@
|
|||
package com.fsck.k9.ui.messagelist
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ContentResolver
|
||||
import android.database.Cursor
|
||||
import android.database.MatrixCursor
|
||||
import android.database.sqlite.SQLiteException
|
||||
import android.net.Uri
|
||||
import com.fsck.k9.Account
|
||||
import com.fsck.k9.Account.SortType
|
||||
import com.fsck.k9.K9
|
||||
import com.fsck.k9.Preferences
|
||||
import com.fsck.k9.fragment.MLFProjectionInfo
|
||||
import com.fsck.k9.fragment.MessageListFragmentComparators.ArrivalComparator
|
||||
|
@ -26,6 +30,7 @@ import com.fsck.k9.search.SqlQueryBuilder
|
|||
import com.fsck.k9.search.getAccounts
|
||||
import java.util.ArrayList
|
||||
import java.util.Comparator
|
||||
import timber.log.Timber
|
||||
|
||||
class MessageListLoader(
|
||||
private val preferences: Preferences,
|
||||
|
@ -62,6 +67,7 @@ class MessageListLoader(
|
|||
return MessageListInfo(messageListItems, hasMoreMessages)
|
||||
}
|
||||
|
||||
@SuppressLint("Recycle")
|
||||
private fun loadMessageListForAccount(account: Account, config: MessageListConfig): Cursor? {
|
||||
val accountUuid = account.uuid
|
||||
val threadId: String? = getThreadId(config.search)
|
||||
|
@ -110,7 +116,17 @@ class MessageListLoader(
|
|||
|
||||
val sortOrder: String = buildSortOrder(config)
|
||||
|
||||
return contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
|
||||
return try {
|
||||
contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
|
||||
} catch (e: SQLiteException) {
|
||||
Timber.e(e, "Error querying EmailProvider")
|
||||
|
||||
if (K9.DEVELOPER_MODE && e.message?.contains("malformed MATCH expression") == false) {
|
||||
throw e
|
||||
}
|
||||
|
||||
return MatrixCursor(projection)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getThreadId(search: LocalSearch): String? {
|
||||
|
|
Loading…
Reference in a new issue