patch 7.4.1640
Problem:    Crash when an autocommand changes a quickfix list. (Dominique)
Solution:   Check wether an entry is still valid. (Yegappan Lakshmanan,
            Hirohito Higashi)
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 07c465d..667ece4 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -504,7 +504,7 @@
       autocmd BufReadCmd t call R(expand("<amatch>"))
     augroup END
 
-    function R(n)
+    function! R(n)
       quit
     endfunc
 
@@ -637,3 +637,45 @@
     call delete('Xerrorfile2')
     call delete('Xtestfile')
 endfunction
+
+function XquickfixChangedByAutocmd(cchar)
+  let Xolder = a:cchar . 'older'
+  let Xgetexpr = a:cchar . 'getexpr'
+  let Xrewind = a:cchar . 'rewind'
+  if a:cchar == 'c'
+    let Xsetlist = 'setqflist('
+    let ErrorNr = 'E925'
+    function! ReadFunc()
+      colder
+      cgetexpr []
+    endfunc
+  else
+    let Xsetlist = 'setloclist(0,'
+    let ErrorNr = 'E926'
+    function! ReadFunc()
+      lolder
+      lgetexpr []
+    endfunc
+  endif
+
+  augroup testgroup
+    au!
+    autocmd BufReadCmd t call ReadFunc()
+  augroup END
+
+  bwipe!
+  let words = [ "a", "b" ]
+  let qflist = []
+  for word in words
+    call add(qflist, {'filename': 't'})
+    exec "call " . Xsetlist . "qflist, '')"
+  endfor
+  exec "call assert_fails('" . Xrewind . "', '" . ErrorNr . ":')"
+
+  augroup! testgroup
+endfunc
+
+function Test_quickfix_was_changed_by_autocmd()
+  call XquickfixChangedByAutocmd('c')
+  call XquickfixChangedByAutocmd('l')
+endfunction