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)
diff --git a/src/option.c b/src/option.c
index db3a197..bc44cb2 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4883,9 +4883,10 @@
{
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 bf1232a..6e56fa2 100644
--- a/src/testdir/test_options.in
+++ b/src/testdir/test_options.in
@@ -10,6 +10,12 @@
: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 a2e1494..0773152 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 450892a..4fb004d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 915,
+/**/
914,
/**/
913,