updated for version 7.4a.042
Problem:    Crash when BufUnload autocommands close all buffers. (Andrew
            Pimlott)
Solution:   Set curwin->w_buffer to curbuf to avoid NULL.
diff --git a/src/testdir/test8.in b/src/testdir/test8.in
index 6fe1715..d9d00d9 100644
--- a/src/testdir/test8.in
+++ b/src/testdir/test8.in
@@ -1,4 +1,5 @@
 Test for BufWritePre autocommand that deletes or unloads the buffer.
+Test for BufUnload autocommand that unloads all other buffers.
 
 STARTTEST
 :so small.vim
@@ -16,6 +17,27 @@
 :bwipe test.out         " remove test.out from the buffer list
 :w                      " write it, will delete the buffer and give an error msg
 :w >>test.out           " Append contents of this file
+:au! BufWritePre
+:func CloseAll()
+  let i = 0
+  while i <= bufnr('$')
+    if i != bufnr('%') && bufloaded(i)
+      exe  i . "bunload"
+    endif
+    let i += 1
+  endwhile
+endfunc
+:func WriteToOut()
+  edit! test.out
+  $put ='VimLeave done'
+  write
+endfunc
+:set viminfo='100,nviminfo
+:au BufUnload * call CloseAll()
+:au VimLeave * call WriteToOut()
+:e small.vim
+:sp mbyte.vim
+:q
 :qa!
 ENDTEST
 
diff --git a/src/testdir/test8.ok b/src/testdir/test8.ok
index 29b066a..adecb2f 100644
--- a/src/testdir/test8.ok
+++ b/src/testdir/test8.ok
@@ -4,3 +4,4 @@
 start of Xxx1
 	test
 end of Xxx
+VimLeave done