diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-01-19 13:08:42 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-01-19 13:08:42 +0100 |
commit | 3ea38ef23944f3d49c126b94708e2d4a540bca42 (patch) | |
tree | 8ad16afccc35444920b3a3ac6baae2f20e2a3fe2 /src/spell.c | |
parent | f68f6562132c81f90638fe547a7591addbdfff3c (diff) | |
download | vim-git-3ea38ef23944f3d49c126b94708e2d4a540bca42.tar.gz |
updated for version 7.2.332v7.2.332
Problem: Crash when spell correcting triggers an autocommand that reloads
the buffer.
Solution: Make a copy of the line to be modified. (Dominique Pelle)
Diffstat (limited to 'src/spell.c')
-rw-r--r-- | src/spell.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/spell.c b/src/spell.c index 033c353bc..98f5e3478 100644 --- a/src/spell.c +++ b/src/spell.c @@ -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. */ |