diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 7d8196c..2afa5e7 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4008,6 +4008,7 @@ do_ecmd(
 	    }
 	    vim_free(new_name);
 	    au_new_curbuf.br_buf = NULL;
+	    au_new_curbuf.br_buf_free_count = 0;
 #endif
 	}
 
@@ -4389,6 +4390,7 @@ delbuf_msg(char_u *name)
 	    name == NULL ? (char_u *)"" : name);
     vim_free(name);
     au_new_curbuf.br_buf = NULL;
+    au_new_curbuf.br_buf_free_count = 0;
 }
 #endif
 
diff --git a/src/globals.h b/src/globals.h
index a3d6b4e..6f3c64f 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -384,7 +384,7 @@ EXTERN int	keep_filetype INIT(= FALSE);	/* value for did_filetype when
 
 /* When deleting the current buffer, another one must be loaded.  If we know
  * which one is preferred, au_new_curbuf is set to it */
-EXTERN bufref_T	au_new_curbuf INIT(= {NULL});
+EXTERN bufref_T	au_new_curbuf INIT(= {NULL COMMA 0});
 
 /* When deleting a buffer/window and autocmd_busy is TRUE, do not free the
  * buffer/window. but link it in the list starting with
diff --git a/src/vim.h b/src/vim.h
index e2d4cc4..498078a 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1765,6 +1765,7 @@ int vim_memcmp(void *, void *, size_t);
 # ifndef INIT
 #  define INIT(x) x
 #  define DO_INIT
+#  define COMMA ,
 # endif
 #endif
 
