1
0
forked from aniani/vim

patch 7.4.1643

Problem:    Terminating file name has side effects.
Solution:   Restore the character. (mostly by James McCoy, closes #713)
This commit is contained in:
Bram Moolenaar
2016-03-24 19:14:35 +01:00
parent 6a08454b93
commit d4caf5c16a
4 changed files with 6 additions and 0 deletions

View File

@@ -26440,8 +26440,10 @@ repeat:
if (src[*usedlen] == ':' && src[*usedlen + 1] == 'S')
{
/* vim_strsave_shellescape() needs a NUL terminated string. */
c = (*fnamep)[*fnamelen];
(*fnamep)[*fnamelen] = NUL;
p = vim_strsave_shellescape(*fnamep, FALSE, FALSE);
(*fnamep)[*fnamelen] = c;
if (p == NULL)
return -1;
vim_free(*bufp);

View File

@@ -36,6 +36,7 @@ STARTTEST
:Put fnamemodify('abc''%''def', ':S' )
:Put fnamemodify("abc\ndef", ':S' )
:Put expand('%:r:S') == shellescape(expand('%:r'))
:Put join([expand('%:r'), expand('%:r:S'), expand('%')], ',')
:set shell=tcsh
:Put fnamemodify("abc\ndef", ':S' )
:$put ='vim: ts=8'

View File

@@ -26,5 +26,6 @@ fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def'''
fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def'''
fnamemodify("abc\ndef", ':S' ) '''abc^@def'''
expand('%:r:S') == shellescape(expand('%:r')) 1
join([expand('%:r'), expand('%:r:S'), expand('%')], ',') 'test105,''test105'',test105.in'
fnamemodify("abc\ndef", ':S' ) '''abc\^@def'''
vim: ts=8

View File

@@ -748,6 +748,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1643,
/**/
1642,
/**/