diff --git a/src/autocmd.c b/src/autocmd.c
index 143891c..2050da6 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -3161,33 +3161,23 @@
 	    for (ac = ap->cmds; ac != NULL; ac = ac->next)
 	    {
 		event_dict = dict_alloc();
-		if (event_dict == NULL)
+		if (event_dict == NULL
+			|| list_append_dict(event_list, event_dict) == FAIL)
 		    return;
 
-		if (list_append_dict(event_list, event_dict) == FAIL)
-		    return;
-
-		if (dict_add_string(event_dict, "event", event_name) == FAIL)
-		    return;
-
-		if (dict_add_string(event_dict, "group", group_name == NULL
-			    ? (char_u *)"" : group_name) == FAIL)
-		    return;
-
-		if (ap->buflocal_nr != 0)
-		    if (dict_add_number(event_dict, "bufnr", ap->buflocal_nr)
-								       == FAIL)
-			return;
-
-		if (dict_add_string(event_dict, "pattern", ap->pat) == FAIL)
-		    return;
-
-		if (dict_add_string(event_dict, "cmd", ac->cmd) == FAIL)
-		    return;
-
-		if (dict_add_bool(event_dict, "once", ac->once) == FAIL)
-		    return;
-		if (dict_add_bool(event_dict, "nested", ac->nested) == FAIL)
+		if (dict_add_string(event_dict, "event", event_name) == FAIL
+			|| dict_add_string(event_dict, "group",
+					group_name == NULL ? (char_u *)""
+							  : group_name) == FAIL
+			|| (ap->buflocal_nr != 0
+				&& (dict_add_number(event_dict, "bufnr",
+						    ap->buflocal_nr) == FAIL))
+			|| dict_add_string(event_dict, "pattern",
+							      ap->pat) == FAIL
+			|| dict_add_string(event_dict, "cmd", ac->cmd) == FAIL
+			|| dict_add_bool(event_dict, "once", ac->once) == FAIL
+			|| dict_add_bool(event_dict, "nested",
+							   ac->nested) == FAIL)
 		    return;
 	    }
 	}
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim
index c37631c..83f43f7 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -90,7 +90,7 @@
       \ 'display': [['', 'lastline', 'lastline,uhex'], ['xxx']],
       \ 'eadirection': [['', 'both', 'ver'], ['xxx', 'ver,hor']],
       \ 'encoding': [['latin1'], ['xxx', '']],
-      \ 'eventignore': [['', 'WinEnter', 'WinLeave,winenter'], ['xxx']],
+      \ 'eventignore': [['', 'WinEnter', 'WinLeave,winenter', 'all,WinEnter'], ['xxx']],
       \ 'fileencoding': [['', 'latin1', 'xxx'], []],
       \ 'fileformat': [['', 'dos', 'unix'], ['xxx']],
       \ 'fileformats': [['', 'dos', 'dos,unix'], ['xxx']],
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 0aaa968..1a4ed1a 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -3384,6 +3384,12 @@
   let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999,
         \ cmd: 'echo "bufadd"'}]
   call assert_fails("echo autocmd_add(l)", 'E680:')
+  let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999,
+        \ pattern: '*.py', cmd: 'echo "bufadd"'}]
+  call assert_fails("echo autocmd_add(l)", 'E680:')
+  let l = [#{group: 'TestAcSet', event: 'BufAdd', bufnr: 9999,
+        \ pattern: ['*.py', '*.c'], cmd: 'echo "bufadd"'}]
+  call assert_fails("echo autocmd_add(l)", 'E680:')
   let l = [#{group: 'TestAcSet', event: 'BufRead', bufnr: [],
         \ cmd: 'echo "bufread"'}]
   call assert_fails("echo autocmd_add(l)", 'E745:')
@@ -3479,6 +3485,7 @@
   " Test for invalid values for 'pattern' item
   let l = [#{group: 'TestAcSet', event: "BufEnter",
         \ pattern: test_null_string(), cmd: 'echo "bufcmds"'}]
+  call assert_fails('call autocmd_add(l)', 'E928:')
   let l = [#{group: 'TestAcSet', event: "BufEnter",
         \ pattern: test_null_list(), cmd: 'echo "bufcmds"'}]
   call assert_fails('call autocmd_add(l)', 'E714:')
@@ -3555,6 +3562,9 @@
   " Delete a non-existing autocmd pattern
   let l = [#{group: 'TestAcSet', event: 'BufAdd', pat: 'abc'}]
   call assert_true(autocmd_delete(l))
+  " Delete an autocmd for a non-existing buffer
+  let l = [#{event: '*', bufnr: 9999, cmd: 'echo "x"'}]
+  call assert_fails('call autocmd_delete(l)', 'E680:')
 
   " Delete an autocmd group
   augroup TestAcSet
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index cc7fe54..77965b3 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -1063,10 +1063,19 @@
   augroup END
   call feedkeys(":augroup X\<C-A>\<C-B>\"\<CR>", 'xt')
   call assert_equal("\"augroup XTest.test", @:)
+
+  " group name completion in :autocmd
   call feedkeys(":au X\<C-A>\<C-B>\"\<CR>", 'xt')
   call assert_equal("\"au XTest.test", @:)
+  call feedkeys(":au XTest.test\<Tab>\<C-B>\"\<CR>", 'xt')
+  call assert_equal("\"au XTest.test", @:)
+
   augroup! XTest.test
 
+  " autocmd pattern completion
+  call feedkeys(":au BufEnter *.py\<Tab>\<C-B>\"\<CR>", 'xt')
+  call assert_equal("\"au BufEnter *.py\t", @:)
+
   " completion for the :unlet command
   call feedkeys(":unlet one two\<C-A>\<C-B>\"\<CR>", 'xt')
   call assert_equal("\"unlet one two", @:)
diff --git a/src/version.c b/src/version.c
index ac33551..97ca8ce 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    5049,
+/**/
     5048,
 /**/
     5047,
