On Mo, 26 Nov 2018, Christian Brabandt wrote:
> This looks very similar to the crash posted here:
> https://github.com/vim/vim/pull/2107#issuecomment-418816582
> 
> I guess the redrawing() function is being called again, that triggers 
> the win_free() and will make curwin invalid. 
> 
> Perhaps we do need a patch similar to this one 
> https://github.com/vim/vim/pull/2107#issuecomment-418882802

How about the following patch:

diff --git a/src/move.c b/src/move.c
index 68404e3f7..c25d6271f 100644
--- a/src/move.c
+++ b/src/move.c
@@ -687,6 +687,8 @@ validate_cline_row(void)
 /*
  * Compute wp->w_cline_row and wp->w_cline_height, based on the current value
  * of wp->w_topline.
+ * Might cause processing of async messages.
+ * If async causes wp to become invalid, uses curwin
  */
     static void
 curs_rows(win_T *wp)
@@ -699,10 +701,16 @@ curs_rows(win_T *wp)
     long       fold_count;
 #endif

-    /* Check if wp->w_lines[].wl_size is invalid */
-    all_invalid = (!redrawing()
-                       || wp->w_lines_valid == 0
-                       || wp->w_lines[0].wl_lnum > wp->w_topline);
+    // Check if wp->w_lines[].wl_size is invalid
+    all_invalid = (wp->w_lines_valid == 0
+                       || wp->w_lines[0].wl_lnum > wp->w_topline
+                       || !redrawing());
+
+    // redrawing might have processed async messages,
+    // causing wp to become invalid
+    if (!win_valid(wp))
+       wp = curwin;
+
     i = 0;
     wp->w_cline_row = 0;
     for (lnum = wp->w_topline; lnum < wp->w_cursor.lnum; ++i)


Best,
Christian
-- 
Wenn der Mensch etwas Edles am andern findet, so träumt er ihm gleich
sein eignes Edle gar an.
                -- Jean Paul

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui