aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro+github@gmail.com>2019-02-17 05:00:14 +0100
committerJustin M. Keyes <justinkz@gmail.com>2019-02-17 05:00:14 +0100
commit023e832d409abeed4819807fc219fa532bcbdb03 (patch)
tree4c2fa6fa8158be510511f9baffe459804c27b166 /src
parent9bfd304459a32be68324f3a0901ae4f6319868dc (diff)
downloadrneovim-023e832d409abeed4819807fc219fa532bcbdb03.tar.gz
rneovim-023e832d409abeed4819807fc219fa532bcbdb03.tar.bz2
rneovim-023e832d409abeed4819807fc219fa532bcbdb03.zip
vim-patch:8.1.0803: session restore: handle single quotes #9620
Problem: Session file has problem with single quote in file name. (Jon Crowe) Solution: Use a double quoted string. Add a test. https://github.com/vim/vim/commit/ad36a3588d32985ee27bd11aa97e5195ef623158 Fixes https://github.com/neovim/neovim/issues/9618
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_docmd.c4
-rw-r--r--src/nvim/testdir/test_mksession.vim14
2 files changed, 16 insertions, 2 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 02d96603b7..cda80dad39 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -9391,9 +9391,9 @@ put_view(
// Note, if a buffer for that file already exists, use :badd to
// edit that buffer, to not lose folding information (:edit resets
// folds in other buffers)
- if (fputs("if bufexists('", fd) < 0
+ if (fputs("if bufexists(\"", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, false) == FAIL
- || fputs("') | buffer ", fd) < 0
+ || fputs("\") | buffer ", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, false) == FAIL
|| fputs(" | else | edit ", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, false) == FAIL
diff --git a/src/nvim/testdir/test_mksession.vim b/src/nvim/testdir/test_mksession.vim
index 9ba264deb6..c2e7bb7bf9 100644
--- a/src/nvim/testdir/test_mksession.vim
+++ b/src/nvim/testdir/test_mksession.vim
@@ -238,4 +238,18 @@ func Test_mkview_no_file_name()
%bwipe
endfunc
+func Test_mksession_quote_in_filename()
+ let v:errmsg = ''
+ %bwipe!
+ split another
+ split x'y\"z
+ mksession! Xtest_mks_quoted.out
+ %bwipe!
+ source Xtest_mks_quoted.out
+ call assert_true(bufexists("x'y\"z"))
+
+ %bwipe!
+ call delete('Xtest_mks_quoted.out')
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab