patch 8.2.0769: VimLeavePre not triggered when Vim is terminated

Problem:    VimLeavePre not triggered when Vim is terminated.
Solution:   Unblock autocommands.
diff --git a/src/main.c b/src/main.c
index b00d7b9..201ed37 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1576,6 +1576,7 @@
 	tabpage_T	*next_tp;
 	buf_T		*buf;
 	win_T		*wp;
+	int		unblock = 0;
 
 	// Trigger BufWinLeave for all windows, but only once per buffer.
 	for (tp = first_tabpage; tp != NULL; tp = next_tp)
@@ -1617,7 +1618,17 @@
 		    // autocmd deleted the buffer
 		    break;
 	    }
+
+	// deathtrap() blocks autocommands, but we do want to trigger
+	// VimLeavePre.
+	if (is_autocmd_blocked())
+	{
+	    unblock_autocmds();
+	    ++unblock;
+	}
 	apply_autocmds(EVENT_VIMLEAVEPRE, NULL, NULL, FALSE, curbuf);
+	if (unblock)
+	    block_autocmds();
     }
 
 #ifdef FEAT_VIMINFO
diff --git a/src/testdir/test_signals.vim b/src/testdir/test_signals.vim
index 0008e31..48e3a3e 100644
--- a/src/testdir/test_signals.vim
+++ b/src/testdir/test_signals.vim
@@ -127,8 +127,13 @@
   if cmd =~ 'valgrind'
     throw 'Skipped: cannot test signal TERM with valgrind'
   endif
+  let lines =<< trim END
+    au VimLeave * call writefile(["VimLeave triggered"], "XautoOut", "a")
+    au VimLeavePre * call writefile(["VimLeavePre triggered"], "XautoOut", "a")
+  END
+  call writefile(lines, 'XsetupAucmd')
 
-  let buf = RunVimInTerminal('Xsig_TERM', {'rows': 6})
+  let buf = RunVimInTerminal('-S XsetupAucmd Xsig_TERM', {'rows': 6})
   let pid_vim = term_getjob(buf)->job_info().process
 
   call term_sendkeys(buf, ":call setline(1, 'foo')\n")
@@ -145,8 +150,14 @@
   silent recover .Xsig_TERM.swp
   call assert_equal(['foo'], getline(1, '$'))
 
+  let result = readfile('XautoOut')
+  call assert_match('VimLeavePre triggered', result[0])
+  call assert_match('VimLeave triggered', result[1])
+
   %bwipe!
   call delete('.Xsig_TERM.swp')
+  call delete('XsetupAucmd')
+  call delete('XautoOut')
 endfunc
 
 " vim: ts=8 sw=2 sts=2 tw=80 fdm=marker
diff --git a/src/version.c b/src/version.c
index 8c89761..a1b038f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    769,
+/**/
     768,
 /**/
     767,