[geary/geary-0.6] Stabilize sort of search email identifiers: Bug #733271



commit 70a9c9330b3d7b0aead941289b3ac1dae439fded
Author: Jim Nelson <jim yorba org>
Date:   Fri Jul 25 13:36:09 2014 -0700

    Stabilize sort of search email identifiers: Bug #733271
    
    Without stabilization, it was possible for multiple emails in search
    results with the same INTERNALDATE to be dropped due to the equality.

 .../imap-db/imap-db-search-email-identifier.vala   |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/src/engine/imap-db/imap-db-search-email-identifier.vala 
b/src/engine/imap-db/imap-db-search-email-identifier.vala
index 53c9b5b..cea7f0b 100644
--- a/src/engine/imap-db/imap-db-search-email-identifier.vala
+++ b/src/engine/imap-db/imap-db-search-email-identifier.vala
@@ -53,11 +53,18 @@ private class Geary.ImapDB.SearchEmailIdentifier : ImapDB.EmailIdentifier,
     }
     
     public virtual int compare_to(SearchEmailIdentifier other) {
-        if (date_received != null && other.date_received != null)
-            return date_received.compare(other.date_received);
+        // if both have date received, compare on that, using stable sort if the same
+        if (date_received != null && other.date_received != null) {
+            int compare = date_received.compare(other.date_received);
+            
+            return (compare != 0) ? compare : stable_sort_comparator(other);
+        }
+        
+        // if neither have date received, fall back on stable sort
         if (date_received == null && other.date_received == null)
             return stable_sort_comparator(other);
         
+        // put identifiers with no date ahead of those with
         return (date_received == null ? -1 : 1);
     }
     


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