[geary] Avoid a crash when "database disk image is malformed" error occurs.



commit 3b87cab5ea7d0d20629c610c883274b1c18caef5
Author: Michael James Gratton <mike vee net>
Date:   Mon May 2 18:13:11 2016 +1000

    Avoid a crash when "database disk image is malformed" error occurs.
    
    Bug 765515.
    
    * src/engine/imap-db/imap-db-account.vala
      (Geary.ImapDB.Account::do_get_search_matches): Check the query actually
      returned valid FTS offsets before attempting to use them.

 src/engine/imap-db/imap-db-account.vala |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/src/engine/imap-db/imap-db-account.vala b/src/engine/imap-db/imap-db-account.vala
index 5a6c027..60789d6 100644
--- a/src/engine/imap-db/imap-db-account.vala
+++ b/src/engine/imap-db/imap-db-account.vala
@@ -1838,6 +1838,15 @@ private class Geary.ImapDB.Account : BaseObject {
             assert(id_map.has_key(docid));
             ImapDB.EmailIdentifier id = id_map.get(docid);
             
+            // XXX Avoid a crash when "database disk image is
+            // malformed" error occurs. Remove this when the SQLite
+            // bug is fixed. See b.g.o #765515 for more info.
+            if (result.string_at(1) == null) {
+                debug("Avoiding a crash from 'database disk image is malformed' error\n");
+                result.next(cancellable);
+                continue;
+            }
+            
             // offsets() function returns a list of 4 strings that are ints indicating position
             // and length of match string in search table corpus
             string[] offset_array = result.nonnull_string_at(1).split(" ");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]