# HG changeset patch # User Christian Brabandt # Date 1447174805 -3600 # Node ID 55c67e16e4fd4ddbad625bece4a239b85060de90 # Parent 9f40a36fbcf3eca4f69663796d3f0da3068c1a38 commit https://github.com/vim/vim/commit/174674743d9a2d7361c9cd89836f8dd8651edeeb Author: Bram Moolenaar 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) diff --git a/src/option.c b/src/option.c --- 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 --- 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 --- 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 --- 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,