X-Git-Url: https://rtime.felk.cvut.cz/gitweb/notmuch.git/blobdiff_plain/71fb37d48236e49b64e300c3764c0e17e02c8f9e..67e368ac7ba84b0ea70356c2bdb3a14018009294:/lib/thread.cc diff --git a/lib/thread.cc b/lib/thread.cc index 79c3e9bb..45425056 100644 --- a/lib/thread.cc +++ b/lib/thread.cc @@ -24,6 +24,8 @@ #include #include /* GHashTable */ +#define EMPTY_STRING(s) ((s)[0] == '\0') + struct visible _notmuch_thread { notmuch_database_t *notmuch; char *thread_id; @@ -332,10 +334,12 @@ _thread_set_subject_from_message (notmuch_thread_t *thread, cleaned_subject = talloc_strdup (thread, subject); } - if (thread->subject) - talloc_free (thread->subject); + if (! EMPTY_STRING(cleaned_subject)) { + if (thread->subject) + talloc_free (thread->subject); - thread->subject = talloc_strdup (thread, cleaned_subject); + thread->subject = talloc_strdup (thread, cleaned_subject); + } } /* Add a message to this thread which is known to match the original @@ -349,8 +353,10 @@ _thread_add_matched_message (notmuch_thread_t *thread, { time_t date; notmuch_message_t *hashed_message; + const char *cur_subject; date = notmuch_message_get_date (message); + cur_subject = notmuch_thread_get_subject(thread); if (date < thread->oldest || ! thread->matched_messages) { thread->oldest = date; @@ -360,7 +366,7 @@ _thread_add_matched_message (notmuch_thread_t *thread, if (date > thread->newest || ! thread->matched_messages) { thread->newest = date; - if (sort != NOTMUCH_SORT_OLDEST_FIRST) + if (sort != NOTMUCH_SORT_OLDEST_FIRST || EMPTY_STRING(cur_subject)) _thread_set_subject_from_message (thread, message); }