From 76cb68309794def0fa7d1f2f72dd694b822186a5 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 15 May 2020 22:30:38 +0200 Subject: patch 8.2.0762: buffer is not considered modified after setting crypt key Problem: Buffer is not considered modified after setting crypt key. Solution: Set the modified flag. (Christian Brabandt, closes #6082) --- src/optionstr.c | 3 +++ src/testdir/test_crypt.vim | 26 ++++++++++++++++++++++++++ src/version.c | 2 ++ 3 files changed, 31 insertions(+) diff --git a/src/optionstr.c b/src/optionstr.c index 17613a656..ff0186f42 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -1157,8 +1157,11 @@ did_set_string_option( if (STRCMP(curbuf->b_p_key, oldval) != 0) // Need to update the swapfile. + { ml_set_crypt_key(curbuf, oldval, *curbuf->b_p_cm == NUL ? p_cm : curbuf->b_p_cm); + changed_internal(); + } } else if (gvarp == &p_cm) diff --git a/src/testdir/test_crypt.vim b/src/testdir/test_crypt.vim index ab62d8470..fa26ba550 100644 --- a/src/testdir/test_crypt.vim +++ b/src/testdir/test_crypt.vim @@ -110,3 +110,29 @@ func Test_crypt_key_mismatch() bwipe! endfunc +func Test_crypt_set_key_changes_buffer() + + new Xtest1.txt + call setline(1, 'nothing') + set cryptmethod=blowfish2 + call feedkeys(":X\foobar\foobar\", 'xt') + call assert_fails(":q", "E37:") + w + set key=anotherkey + call assert_fails(":bw") + w + call feedkeys(":X\foobar\foobar\", 'xt') + call assert_fails(":bw") + w + let winnr = winnr() + wincmd p + call setwinvar(winnr, '&key', 'yetanotherkey') + wincmd p + call assert_fails(":bw") + w + + set cryptmethod& + set key= + bwipe! + call delete('Xtest1.txt') +endfunc diff --git a/src/version.c b/src/version.c index c631d54fe..90773d3f9 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 762, /**/ 761, /**/ -- cgit v1.2.1