]> granicus.if.org Git - vim/commitdiff
updated for version 7.2.332 v7.2.332
authorBram Moolenaar <Bram@vim.org>
Tue, 19 Jan 2010 12:08:42 +0000 (13:08 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 19 Jan 2010 12:08:42 +0000 (13:08 +0100)
Problem:    Crash when spell correcting triggers an autocommand that reloads
            the buffer.
Solution:   Make a copy of the line to be modified. (Dominique Pelle)

src/spell.c
src/version.c

index 033c353bc0f373057dc2a17859b693804c411c4b..98f5e3478ba3be4cb5844a319c94d873d9203a26 100644 (file)
@@ -10306,7 +10306,10 @@ spell_suggest(count)
     /* Figure out if the word should be capitalised. */
     need_cap = check_need_cap(curwin->w_cursor.lnum, curwin->w_cursor.col);
 
-    line = ml_get_curline();
+    /* Make a copy of current line since autocommands may free the line. */
+    line = vim_strsave(ml_get_curline());
+    if (line == NULL)
+       goto skip;
 
     /* Get the list of suggestions.  Limit to 'lines' - 2 or the number in
      * 'spellsuggest', whatever is smaller. */
@@ -10470,6 +10473,8 @@ spell_suggest(count)
        curwin->w_cursor = prev_cursor;
 
     spell_find_cleanup(&sug);
+skip:
+    vim_free(line);
 }
 
 /*
@@ -10931,7 +10936,7 @@ spell_suggest_intern(su, interactive)
            rescore_suggestions(su);
 
        /*
-        * While going throught the soundfold tree "su_maxscore" is the score
+        * While going through the soundfold tree "su_maxscore" is the score
         * for the soundfold word, limits the changes that are being tried,
         * and "su_sfmaxscore" the rescored score, which is set by
         * cleanup_suggestions().
@@ -11415,7 +11420,7 @@ suggest_trie_walk(su, lp, fword, soundfold)
     char_u     tword[MAXWLEN];     /* good word collected so far */
     trystate_T stack[MAXWLEN];
     char_u     preword[MAXWLEN * 3]; /* word found with proper case;
-                                      * concatanation of prefix compound
+                                      * concatenation of prefix compound
                                       * words and split word.  NUL terminated
                                       * when going deeper but not when coming
                                       * back. */
index 9e1227dcf973ad272c918f40b9494b412ba648d6..91a4685eae87ab81bb0552a7d24474291b99ffe4 100644 (file)
@@ -681,6 +681,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    332,
 /**/
     331,
 /**/