diff --git a/7.3.715 b/7.3.715
new file mode 100644
index 0000000..0542c43
--- /dev/null
+++ b/7.3.715
@@ -0,0 +1,234 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.715
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.715
+Problem:    Crash when calling setloclist() in BufUnload autocmd. (Marcin
+	    Szamotulski)
+Solution:   Set w_llist to NULL when it was freed.  Also add a test.
+	    (Christian Brabandt)
+Files:	    src/quickfix.c, src/testdir/test49.ok, src/testdir/test49.vim
+
+
+*** ../vim-7.3.714/src/quickfix.c	2012-06-29 12:57:03.000000000 +0200
+--- src/quickfix.c	2012-11-14 22:33:20.000000000 +0100
+***************
+*** 107,113 ****
+  };
+  
+  static int	qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title));
+! static void	qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title));
+  static void	ll_free_all __ARGS((qf_info_T **pqi));
+  static int	qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid));
+  static qf_info_T *ll_new_list __ARGS((void));
+--- 107,113 ----
+  };
+  
+  static int	qf_init_ext __ARGS((qf_info_T *qi, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title));
+! static void	qf_new_list __ARGS((qf_info_T *qi, char_u *qf_title, win_T *wp));
+  static void	ll_free_all __ARGS((qf_info_T **pqi));
+  static int	qf_add_entry __ARGS((qf_info_T *qi, qfline_T **prevp, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid));
+  static qf_info_T *ll_new_list __ARGS((void));
+***************
+*** 266,272 ****
+  
+      if (newlist || qi->qf_curlist == qi->qf_listcount)
+  	/* make place for a new list */
+! 	qf_new_list(qi, qf_title);
+      else if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+  	/* Adding to existing list, find last entry. */
+  	for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start;
+--- 266,272 ----
+  
+      if (newlist || qi->qf_curlist == qi->qf_listcount)
+  	/* make place for a new list */
+! 	qf_new_list(qi, qf_title, curwin);
+      else if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+  	/* Adding to existing list, find last entry. */
+  	for (qfprev = qi->qf_lists[qi->qf_curlist].qf_start;
+***************
+*** 885,893 ****
+   * Prepare for adding a new quickfix list.
+   */
+      static void
+! qf_new_list(qi, qf_title)
+      qf_info_T	*qi;
+      char_u	*qf_title;
+  {
+      int		i;
+  
+--- 885,894 ----
+   * Prepare for adding a new quickfix list.
+   */
+      static void
+! qf_new_list(qi, qf_title, wp)
+      qf_info_T	*qi;
+      char_u	*qf_title;
++     win_T	*wp;
+  {
+      int		i;
+  
+***************
+*** 897,903 ****
+--- 898,908 ----
+       * way with ":grep'.
+       */
+      while (qi->qf_listcount > qi->qf_curlist + 1)
++     {
++ 	if (wp != NULL && wp->w_llist == qi)
++ 	    wp->w_llist = NULL;
+  	qf_free(qi, --qi->qf_listcount);
++     }
+  
+      /*
+       * When the stack is full, remove to oldest entry
+***************
+*** 905,910 ****
+--- 910,917 ----
+       */
+      if (qi->qf_listcount == LISTCOUNT)
+      {
++ 	if (wp != NULL && wp->w_llist == qi)
++ 	    wp->w_llist = NULL;
+  	qf_free(qi, 0);
+  	for (i = 1; i < LISTCOUNT; ++i)
+  	    qi->qf_lists[i - 1] = qi->qf_lists[i];
+***************
+*** 3181,3187 ****
+  	 eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd)
+  					|| qi->qf_curlist == qi->qf_listcount)
+  	/* make place for a new list */
+! 	qf_new_list(qi, *eap->cmdlinep);
+      else if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+  	/* Adding to existing list, find last entry. */
+  	for (prevp = qi->qf_lists[qi->qf_curlist].qf_start;
+--- 3188,3194 ----
+  	 eap->cmdidx != CMD_vimgrepadd && eap->cmdidx != CMD_lvimgrepadd)
+  					|| qi->qf_curlist == qi->qf_listcount)
+  	/* make place for a new list */
+! 	qf_new_list(qi, *eap->cmdlinep, curwin);
+      else if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+  	/* Adding to existing list, find last entry. */
+  	for (prevp = qi->qf_lists[qi->qf_curlist].qf_start;
+***************
+*** 3747,3753 ****
+  
+      if (action == ' ' || qi->qf_curlist == qi->qf_listcount)
+  	/* make place for a new list */
+! 	qf_new_list(qi, title);
+      else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0)
+  	/* Adding to existing list, find last entry. */
+  	for (prevp = qi->qf_lists[qi->qf_curlist].qf_start;
+--- 3754,3760 ----
+  
+      if (action == ' ' || qi->qf_curlist == qi->qf_listcount)
+  	/* make place for a new list */
+! 	qf_new_list(qi, title, wp);
+      else if (action == 'a' && qi->qf_lists[qi->qf_curlist].qf_count > 0)
+  	/* Adding to existing list, find last entry. */
+  	for (prevp = qi->qf_lists[qi->qf_curlist].qf_start;
+***************
+*** 4029,4035 ****
+  #endif
+  
+  	/* create a new quickfix list */
+! 	qf_new_list(qi, *eap->cmdlinep);
+  
+  	/* Go through all directories in 'runtimepath' */
+  	p = p_rtp;
+--- 4036,4042 ----
+  #endif
+  
+  	/* create a new quickfix list */
+! 	qf_new_list(qi, *eap->cmdlinep, wp);
+  
+  	/* Go through all directories in 'runtimepath' */
+  	p = p_rtp;
+*** ../vim-7.3.714/src/testdir/test49.ok	2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test49.ok	2012-11-14 22:26:13.000000000 +0100
+***************
+*** 85,92 ****
+  *** Test  83: OK (2835)
+  *** Test  84: OK (934782101)
+  *** Test  85: OK (198689)
+! --- Test  86: All tests were run with throwing exceptions on error.
+  	      The $VIMNOERRTHROW control is not configured.
+! --- Test  86: All tests were run with throwing exceptions on interrupt.
+  	      The $VIMNOINTTHROW control is not configured.
+! *** Test  86: OK (50443995)
+--- 85,94 ----
+  *** Test  83: OK (2835)
+  *** Test  84: OK (934782101)
+  *** Test  85: OK (198689)
+! --- Test  86: No Crash for vimgrep on BufUnload
+! *** Test  86: OK (0)
+! --- Test  87: All tests were run with throwing exceptions on error.
+  	      The $VIMNOERRTHROW control is not configured.
+! --- Test  87: All tests were run with throwing exceptions on interrupt.
+  	      The $VIMNOINTTHROW control is not configured.
+! *** Test  87: OK (50443995)
+*** ../vim-7.3.714/src/testdir/test49.vim	2010-09-29 16:55:45.000000000 +0200
+--- src/testdir/test49.vim	2012-11-14 22:26:13.000000000 +0100
+***************
+*** 9603,9611 ****
+  
+  Xcheck 198689
+  
+  
+  "-------------------------------------------------------------------------------
+! " Test 86:  $VIMNOERRTHROW and $VIMNOINTTHROW support			    {{{1
+  "
+  "	    It is possible to configure Vim for throwing exceptions on error
+  "	    or interrupt, controlled by variables $VIMNOERRTHROW and
+--- 9603,9630 ----
+  
+  Xcheck 198689
+  
++ "-------------------------------------------------------------------------------
++ " Test 86   setloclist crash						    {{{1
++ "
++ "	    Executing a setloclist() on BufUnload shouldn't crash Vim
++ "-------------------------------------------------------------------------------
++ 
++ func F
++     au BufUnload * :call setloclist(0, [{'bufnr':1, 'lnum':1, 'col':1, 'text': 'tango down'}])
++ 
++     :lvimgrep /.*/ *
++ endfunc
++ 
++ XpathINIT
++ 
++ ExecAsScript F
++ 
++ delfunction F
++ Xout  "No Crash for vimgrep on BufUnload"
++ Xcheck 0 
+  
+  "-------------------------------------------------------------------------------
+! " Test 87:  $VIMNOERRTHROW and $VIMNOINTTHROW support			    {{{1
+  "
+  "	    It is possible to configure Vim for throwing exceptions on error
+  "	    or interrupt, controlled by variables $VIMNOERRTHROW and
+*** ../vim-7.3.714/src/version.c	2012-11-14 20:52:22.000000000 +0100
+--- src/version.c	2012-11-14 22:36:45.000000000 +0100
+***************
+*** 727,728 ****
+--- 727,730 ----
+  {   /* Add new patch number below this line */
++ /**/
++     715,
+  /**/
+
+-- 
+One difference between a man and a machine is that a machine is quiet
+when well oiled.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///