aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Walch <florian@fwalch.com>2014-12-23 10:24:46 +0100
committerFlorian Walch <florian@fwalch.com>2014-12-23 10:27:05 +0100
commit1053f49ab08681ad2a7f98ee66aa90db9442d937 (patch)
tree5553f1fc108a001a0de6d0433c3ef4e00f80238c
parentc3de63bfbc168cd8ccc53dbb3e587043c11f7276 (diff)
downloadrneovim-1053f49ab08681ad2a7f98ee66aa90db9442d937.tar.gz
rneovim-1053f49ab08681ad2a7f98ee66aa90db9442d937.tar.bz2
rneovim-1053f49ab08681ad2a7f98ee66aa90db9442d937.zip
vim-patch:7.4.395
Problem: C indent is wrong below an if with wrapped condition followed by curly braces. (Trevor Powell) Solution: Make a copy of tryposBrace. https://code.google.com/p/vim/source/detail?r=v7-4-395
-rw-r--r--src/nvim/indent_c.c5
-rw-r--r--src/nvim/testdir/test3.in8
-rw-r--r--src/nvim/testdir/test3.ok8
-rw-r--r--src/nvim/version.c2
4 files changed, 22 insertions, 1 deletions
diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c
index bbc0b291dc..39ad512227 100644
--- a/src/nvim/indent_c.c
+++ b/src/nvim/indent_c.c
@@ -1545,6 +1545,7 @@ int get_c_indent(void)
char_u *linecopy;
pos_T *trypos;
pos_T *tryposBrace = NULL;
+ pos_T tryposBraceCopy;
pos_T our_paren_pos;
char_u *start;
int start_brace;
@@ -2026,6 +2027,10 @@ int get_c_indent(void)
} else {
// We are inside braces, there is a { before this line at the position
// stored in tryposBrace.
+ // Make a copy of tryposBrace, it may point to pos_copy inside
+ // find_start_brace(), which may be changed somewhere.
+ tryposBraceCopy = *tryposBrace;
+ tryposBrace = &tryposBraceCopy;
trypos = tryposBrace;
ourscope = trypos->lnum;
start = ml_get(ourscope);
diff --git a/src/nvim/testdir/test3.in b/src/nvim/testdir/test3.in
index 7f6d412806..42255e2019 100644
--- a/src/nvim/testdir/test3.in
+++ b/src/nvim/testdir/test3.in
@@ -464,6 +464,14 @@ label: if (asdf &&
asdfasdf
}
+{
+for ( int i = 0;
+ i < 10; i++ )
+{
+}
+ i = 0;
+}
+
class bob
{
int foo() {return 1;}
diff --git a/src/nvim/testdir/test3.ok b/src/nvim/testdir/test3.ok
index 0d0e76fce4..e75de0ffa3 100644
--- a/src/nvim/testdir/test3.ok
+++ b/src/nvim/testdir/test3.ok
@@ -452,6 +452,14 @@ label: if (asdf &&
asdfasdf
}
+{
+ for ( int i = 0;
+ i < 10; i++ )
+ {
+ }
+ i = 0;
+}
+
class bob
{
int foo() {return 1;}
diff --git a/src/nvim/version.c b/src/nvim/version.c
index cd11dfe1d0..e93683ab45 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -342,7 +342,7 @@ static int included_patches[] = {
//398 NA
397,
//396,
- //395,
+ 395,
//394 NA
//393 NA
392,