diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-02-11 18:54:43 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-02-11 18:54:43 +0100 |
commit | 0ca4b350f0fad7bfdc9722e3e7eb1af5fb2e5843 (patch) | |
tree | 71dda651e87b5871611be0457a84b8aed65d512c /src/memline.c | |
parent | b4990bf90bf9629e036a2636679c3b8f3f6cd552 (diff) | |
download | vim-git-0ca4b350f0fad7bfdc9722e3e7eb1af5fb2e5843.tar.gz |
updated for version 7.2.359v7.2.359
Problem: Crash when using the Netbeans join command.
Solution: Make sure the ml_flush_line() function is not used recursively.
(Xavier de Gaye)
Diffstat (limited to 'src/memline.c')
-rw-r--r-- | src/memline.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/memline.c b/src/memline.c index 480e93cf6..29a6e5cca 100644 --- a/src/memline.c +++ b/src/memline.c @@ -3087,12 +3087,19 @@ ml_flush_line(buf) int start; int count; int i; + static int entered = FALSE; if (buf->b_ml.ml_line_lnum == 0 || buf->b_ml.ml_mfp == NULL) return; /* nothing to do */ if (buf->b_ml.ml_flags & ML_LINE_DIRTY) { + /* This code doesn't work recursively, but Netbeans may call back here + * when obtaining the cursor position. */ + if (entered) + return; + entered = TRUE; + lnum = buf->b_ml.ml_line_lnum; new_line = buf->b_ml.ml_line_ptr; @@ -3160,6 +3167,8 @@ ml_flush_line(buf) } } vim_free(new_line); + + entered = FALSE; } buf->b_ml.ml_line_lnum = 0; |