Problem: Using freed memory when exiting while compiled with EXITFREE.
Solution: Set curwin to NULL and check for that. (Dominique Pelle)
signlist_T *next;
/* When deleting the last sign need to redraw the windows to remove the
- * sign column. */
- if (buf->b_signlist != NULL)
+ * sign column. Not when curwin is NULL (this means we're exiting). */
+ if (buf->b_signlist != NULL && curwin != NULL)
{
redraw_buf_later(buf, NOT_VALID);
changed_cline_bef_curs();
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 369,
/**/
368,
/**/
while (firstwin != NULL)
(void)win_free_mem(firstwin, &dummy, NULL);
+
+ /* No window should be used after this. Set curwin to NULL to crash
+ * instead of using freed memory. */
+ curwin = NULL;
}
#endif