]> granicus.if.org Git - neomutt/commitdiff
libemail: fix thread code for degenerate cases
authorRichard Russon <rich@flatcap.org>
Mon, 29 Apr 2019 13:57:30 +0000 (14:57 +0100)
committerRichard Russon <rich@flatcap.org>
Tue, 30 Apr 2019 10:22:04 +0000 (11:22 +0100)
email/thread.c

index 2e332c17cefee4dd48e65fe67e3ea20c93068fe8..622155f7a316fa832aab1afab7070391c1e58add 100644 (file)
@@ -63,6 +63,9 @@ bool is_descendant(struct MuttThread *a, struct MuttThread *b)
  */
 void unlink_message(struct MuttThread **old, struct MuttThread *cur)
 {
+  if (!old || !cur)
+    return;
+
   struct MuttThread *tmp = NULL;
 
   if (cur->prev)
@@ -91,6 +94,9 @@ void unlink_message(struct MuttThread **old, struct MuttThread *cur)
 void insert_message(struct MuttThread **new, struct MuttThread *newparent,
                     struct MuttThread *cur)
 {
+  if (!cur || !new)
+    return;
+
   if (*new)
     (*new)->prev = cur;
 
@@ -116,6 +122,9 @@ void thread_hash_destructor(int type, void *obj, intptr_t data)
  */
 struct Email *find_virtual(struct MuttThread *cur, int reverse)
 {
+  if (!cur)
+    return NULL;
+
   struct MuttThread *top = NULL;
 
   if (cur->message && (cur->message->virtual >= 0))
@@ -216,6 +225,9 @@ void clean_references(struct MuttThread *brk, struct MuttThread *cur)
  */
 void mutt_break_thread(struct Email *e)
 {
+  if (!e)
+    return;
+
   mutt_list_free(&e->env->in_reply_to);
   mutt_list_free(&e->env->references);
   e->changed = true;