mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	vim-patch:8.1.0425: ml_get error and crash with appendbufline()
Problem: ml_get error and crash with appendbufline(). (Masashi Iizuka) Solution: Set per-window buffer info. (Hirohito Higashi, closes vim/vim#3455)9cea87c577Co-authored-by: Bram Moolenaar <Bram@vim.org> (cherry picked from commitc6f0a19206)
This commit is contained in:
		 zeertzjq
					zeertzjq
				
			
				
					committed by
					
						![github-actions[bot]](/assets/img/avatar_default.png) github-actions[bot]
						github-actions[bot]
					
				
			
			
				
	
			
			
			![github-actions[bot]](/assets/img/avatar_default.png) github-actions[bot]
						github-actions[bot]
					
				
			
						parent
						
							30db74de66
						
					
				
				
					commit
					a65c4be2de
				
			| @@ -1728,6 +1728,9 @@ void enter_buffer(buf_T *buf) | |||||||
|   // mark cursor position as being invalid |   // mark cursor position as being invalid | ||||||
|   curwin->w_valid = 0; |   curwin->w_valid = 0; | ||||||
|  |  | ||||||
|  |   buflist_setfpos(curbuf, curwin, curbuf->b_last_cursor.mark.lnum, | ||||||
|  |                   curbuf->b_last_cursor.mark.col, true); | ||||||
|  |  | ||||||
|   // Make sure the buffer is loaded. |   // Make sure the buffer is loaded. | ||||||
|   if (curbuf->b_ml.ml_mfp == NULL) {    // need to load the file |   if (curbuf->b_ml.ml_mfp == NULL) {    // need to load the file | ||||||
|     // If there is no filetype, allow for detecting one.  Esp. useful for |     // If there is no filetype, allow for detecting one.  Esp. useful for | ||||||
|   | |||||||
| @@ -158,6 +158,33 @@ func Test_appendbufline() | |||||||
|   exe "bwipe! " . b |   exe "bwipe! " . b | ||||||
| endfunc | endfunc | ||||||
|  |  | ||||||
|  | func Test_appendbufline_no_E315() | ||||||
|  |   let after = [ | ||||||
|  |     \ 'set stl=%f ls=2', | ||||||
|  |     \ 'new', | ||||||
|  |     \ 'let buf = bufnr("%")', | ||||||
|  |     \ 'quit', | ||||||
|  |     \ 'vsp', | ||||||
|  |     \ 'exec "buffer" buf', | ||||||
|  |     \ 'wincmd w', | ||||||
|  |     \ 'call appendbufline(buf, 0, "abc")', | ||||||
|  |     \ 'redraw', | ||||||
|  |     \ 'while getbufline(buf, 1)[0] =~ "^\\s*$"', | ||||||
|  |     \ '  sleep 10m', | ||||||
|  |     \ 'endwhile', | ||||||
|  |     \ 'au VimLeavePre * call writefile([v:errmsg], "Xerror")', | ||||||
|  |     \ 'au VimLeavePre * call writefile(["done"], "Xdone")', | ||||||
|  |     \ 'qall!', | ||||||
|  |     \ ] | ||||||
|  |   if !RunVim([], after, '--clean') | ||||||
|  |     return | ||||||
|  |   endif | ||||||
|  |   call assert_notmatch("^E315:", readfile("Xerror")[0]) | ||||||
|  |   call assert_equal("done", readfile("Xdone")[0]) | ||||||
|  |   call delete("Xerror") | ||||||
|  |   call delete("Xdone") | ||||||
|  | endfunc | ||||||
|  |  | ||||||
| func Test_deletebufline() | func Test_deletebufline() | ||||||
|   new |   new | ||||||
|   let b = bufnr('%') |   let b = bufnr('%') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user