# HG changeset patch # User Bram Moolenaar # Date 1589575504 -7200 # Node ID b582eb6ef1928b50f2bb38e0dc4ba691fc52902a # Parent cbf8715299d8d1a235769da2669b6df6c38149bf patch 8.2.0762: buffer is not considered modified after setting crypt key Commit: https://github.com/vim/vim/commit/76cb68309794def0fa7d1f2f72dd694b822186a5 Author: Bram Moolenaar Date: Fri May 15 22:30:38 2020 +0200 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 https://github.com/vim/vim/issues/6082) diff --git a/src/optionstr.c b/src/optionstr.c --- 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 762, +/**/ 761, /**/ 760,