myarrow[1] = (tree->fake_thread) ? M_TREE_STAR : M_TREE_HLINE;
myarrow[1] = (tree->fake_thread ?  M_TREE_STAR : (tree->duplicate_thread ? M_TREE_EQUALS : M_TREE_HLINE));
void mutt_linearize_tree (CONTEXT *ctx, int linearize){  char *pfx = NULL, *mypfx = NULL, *arrow = NULL, *myarrow = NULL;  char corner = Sort & SORT_REVERSE ? M_TREE_ULCORNER : M_TREE_LLCORNER;  int depth = 0, start_depth = 0, max_depth = 0, max_width = 0;  int nextdisp = 0, visible;  THREAD *tree = ctx->tree;  HEADER **array = ctx->hdrs + (Sort & SORT_REVERSE ? ctx->msgcount - 1 : 0);  HEADER *hdr;  FOREVER  {    hdr = tree->message;    if (hdr)    {      if ((visible = VISIBLE (hdr, ctx)) !=  0)	hdr->display_subject = need_display_subject (ctx, hdr);      safe_free ((void **) &hdr->tree);    }    else      visible = 0;    if (depth >= max_depth)      safe_realloc ((void **) &pfx,		    (max_depth += 32) * 2 * sizeof (char));    if (depth - start_depth >= max_width)      safe_realloc ((void **) &arrow,		    (max_width += 16) * 2 * sizeof (char));    if (depth)    {      myarrow = arrow + (depth - start_depth - (start_depth ? 0 : 1)) * 2;      nextdisp = is_next_displayed (ctx, tree);            if (depth && start_depth == depth)	myarrow[0] = nextdisp ? M_TREE_LTEE : corner;      else	myarrow[0] = tree->parent->message ? M_TREE_HIDDEN : M_TREE_MISSING;      myarrow[1] = (tree->fake_thread) ? M_TREE_STAR : M_TREE_HLINE;      if (visible)      {	myarrow[2] = M_TREE_RARROW;	myarrow[3] = 0;      }      if (visible)      {	hdr->tree = safe_malloc ((2 + depth * 2) * sizeof (char));	if (start_depth > 1)	{	  strncpy (hdr->tree, pfx, (start_depth - 1) * 2);	  strfcpy (hdr->tree + (start_depth - 1) * 2,		   arrow, (2 + depth - start_depth) * 2);	}	else	  strfcpy (hdr->tree, arrow, 2 + depth * 2);      }    }    if (linearize && hdr)    {      *array = hdr;      array += Sort & SORT_REVERSE ? -1 : 1;    }    if (tree->child)    {      if (depth)      {	mypfx = pfx + (depth - 1) * 2;	mypfx[0] = nextdisp ? M_TREE_VLINE : M_TREE_SPACE;	mypfx[1] = M_TREE_SPACE;      }      if (depth || !option (OPTHIDEMISSING)	  || tree->message || tree->child->next)	depth++;      if (visible)        start_depth = depth;      tree = tree->child;      hdr = tree->message;    }    else    {      while (!tree->next && tree->parent)      {	if (hdr && VISIBLE (hdr, ctx))	  start_depth = depth;	tree = tree->parent;	hdr = tree->message;	if (depth)	{	  if (start_depth == depth)	    start_depth--;	  depth--;	}      }      if (hdr && VISIBLE (hdr, ctx))	start_depth = depth;      tree = tree->next;      if (!tree)	break;    }  }  safe_free ((void **) &pfx);  safe_free ((void **) &arrow);}