summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-11-10 17:50:24 +0100
committerBram Moolenaar <Bram@vim.org>2015-11-10 17:50:24 +0100
commit174674743d9a2d7361c9cd89836f8dd8651edeeb (patch)
treecc9bee4c0a351541dd3ddfc1a236420c5f0df757
parent98b30a473a58ae98c280e0383c8b1e08c0ebced5 (diff)
downloadvim-174674743d9a2d7361c9cd89836f8dd8651edeeb.zip
patch 7.4.915
Problem: When removing from 'path' and then adding, a comma may go missing. (Malcolm Rowe) Solution: Fix the check for P_ONECOMMA. (closes #471)
-rw-r--r--src/option.c7
-rw-r--r--src/testdir/test_options.in6
-rw-r--r--src/testdir/test_options.ok1
-rw-r--r--src/version.c2
4 files changed, 13 insertions, 3 deletions
diff --git a/src/option.c b/src/option.c
index db3a197af..bc44cb2d4 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4883,9 +4883,10 @@ do_set(arg, opt_flags)
{
i = (int)STRLEN(origval);
/* strip a trailing comma, would get 2 */
- if (comma && (flags & P_ONECOMMA) && i > 1
- && origval[i - 1] == ','
- && origval[i - 2] != '\\')
+ if (comma && i > 1
+ && (flags & P_ONECOMMA) == P_ONECOMMA
+ && origval[i - 1] == ','
+ && origval[i - 2] != '\\')
i--;
mch_memmove(newval + i + comma, newval,
STRLEN(newval) + 1);
diff --git a/src/testdir/test_options.in b/src/testdir/test_options.in
index bf1232a22..6e56fa242 100644
--- a/src/testdir/test_options.in
+++ b/src/testdir/test_options.in
@@ -10,6 +10,12 @@ STARTTEST
:endtry
:buf 1
:$put =caught
+:"
+:" Test that changing 'path' keeps two commas.
+:set path=foo,,bar
+:set path-=bar
+:set path+=bar
+:$put =&path
:/^result/,$w! test.out
:qa!
ENDTEST
diff --git a/src/testdir/test_options.ok b/src/testdir/test_options.ok
index a2e1494a1..07731526b 100644
--- a/src/testdir/test_options.ok
+++ b/src/testdir/test_options.ok
@@ -1,2 +1,3 @@
result
ok
+foo,,bar
diff --git a/src/version.c b/src/version.c
index 450892a5c..4fb004d72 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 915,
+/**/
914,
/**/
913,