diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-24 19:14:35 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-24 19:14:35 +0100 |
commit | d4caf5c16a9f1c9477d426e58d8d3dc47ab5f066 (patch) | |
tree | e5227e46b6a20f32f0e1c43ac828a74826ceedda | |
parent | 6a08454b93784c92296d4c08456401cbaa74c9d5 (diff) | |
download | vim-d4caf5c16a9f1c9477d426e58d8d3dc47ab5f066.zip |
patch 7.4.1643
Problem: Terminating file name has side effects.
Solution: Restore the character. (mostly by James McCoy, closes #713)
-rw-r--r-- | src/eval.c | 2 | ||||
-rw-r--r-- | src/testdir/test105.in | 1 | ||||
-rw-r--r-- | src/testdir/test105.ok | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 6 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index 9091f7972..55d61e79b 100644 --- a/src/eval.c +++ b/src/eval.c @@ -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); diff --git a/src/testdir/test105.in b/src/testdir/test105.in index 9921d7ed7..4cc026144 100644 --- a/src/testdir/test105.in +++ b/src/testdir/test105.in @@ -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' diff --git a/src/testdir/test105.ok b/src/testdir/test105.ok index 584f0fe6a..6642bfe4f 100644 --- a/src/testdir/test105.ok +++ b/src/testdir/test105.ok @@ -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 diff --git a/src/version.c b/src/version.c index 15b6d0dea..4cd93d284 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1643, +/**/ 1642, /**/ 1641, |