changeset 7212:55c67e16e4fd v7.4.915

commit https://github.com/vim/vim/commit/174674743d9a2d7361c9cd89836f8dd8651edeeb Author: Bram Moolenaar <Bram@vim.org> Date: Tue Nov 10 17:50:24 2015 +0100 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)
author Christian Brabandt <cb@256bit.org>
date Tue, 10 Nov 2015 18:00:05 +0100
parents 9f40a36fbcf3
children 9725f5621a39
files src/option.c src/testdir/test_options.in src/testdir/test_options.ok src/version.c
diffstat 4 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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
--- a/src/testdir/test_options.ok
+++ b/src/testdir/test_options.ok
@@ -1,2 +1,3 @@
 result
 ok
+foo,,bar
--- 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,