mirror of
				https://github.com/vim/vim.git
				synced 2025-10-28 09:27:14 -04:00 
			
		
		
		
	patch 8.2.3484: crash when going through spell suggestions
Problem:    Crash when going through spell suggestions.
Solution:   Limit the text length for finding suggestions to the original
            length.  Do not update buffers when exiting. (closes #8965)
			
			
This commit is contained in:
		| @@ -199,7 +199,8 @@ clip_lose_selection(Clipboard_T *cbd) | ||||
| 					    || get_real_state() == SELECTMODE) | ||||
| 		&& (cbd == &clip_star ? | ||||
| 				clip_isautosel_star() : clip_isautosel_plus()) | ||||
| 		&& HL_ATTR(HLF_V) != HL_ATTR(HLF_VNC)) | ||||
| 		&& HL_ATTR(HLF_V) != HL_ATTR(HLF_VNC) | ||||
| 		&& !exiting) | ||||
| 	{ | ||||
| 	    update_curbuf(INVERTED_ALL); | ||||
| 	    setcursor(); | ||||
|   | ||||
| @@ -1178,6 +1178,11 @@ suggest_try_change(suginfo_T *su) | ||||
|     p = su->su_badptr + su->su_badlen; | ||||
|     (void)spell_casefold(curwin, p, (int)STRLEN(p), fword + n, MAXWLEN - n); | ||||
|  | ||||
|     // Make sure the resulting text is not longer than the original text. | ||||
|     n = (int)STRLEN(su->su_badptr); | ||||
|     if (n < MAXWLEN) | ||||
| 	fword[n] = NUL; | ||||
|  | ||||
|     for (lpi = 0; lpi < curwin->w_s->b_langp.ga_len; ++lpi) | ||||
|     { | ||||
| 	lp = LANGP_ENTRY(curwin->w_s->b_langp, lpi); | ||||
|   | ||||
| @@ -765,4 +765,20 @@ func Test_spellfile_value() | ||||
|   set spellfile=Xdir/Xtest.utf-8.add,Xtest_other.add | ||||
| endfunc | ||||
|  | ||||
| func Test_no_crash_with_weird_text() | ||||
|   new | ||||
|   let lines =<< trim END | ||||
|       r<sfile> | ||||
|        | ||||
|  | ||||
|  | ||||
|        | ||||
|   END | ||||
|   call setline(1, lines) | ||||
|   exe "%norm \<C-v>ez=>\<C-v>wzG" | ||||
|  | ||||
|   bwipe! | ||||
| endfunc | ||||
|  | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -757,6 +757,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     3484, | ||||
| /**/ | ||||
|     3483, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user