#include <gmime/gmime.h>
#include <glib.h> /* GHashTable */
+#define EMPTY_STRING(s) ((s)[0] == '\0')
+
struct visible _notmuch_thread {
notmuch_database_t *notmuch;
char *thread_id;
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
{
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;
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);
}