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;
 	    }
 	}
