summaryrefslogtreecommitdiffstats
path: root/src/memline.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-02-11 18:54:43 +0100
committerBram Moolenaar <Bram@vim.org>2010-02-11 18:54:43 +0100
commit0ca4b350f0fad7bfdc9722e3e7eb1af5fb2e5843 (patch)
tree71dda651e87b5871611be0457a84b8aed65d512c /src/memline.c
parentb4990bf90bf9629e036a2636679c3b8f3f6cd552 (diff)
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.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/memline.c b/src/memline.c
index 480e93cf64..29a6e5cca3 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;