diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 64dcd7e..d8adf85 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7358,7 +7358,8 @@
 {
     char_u	*pdir = NULL;
     int		dir_differs;
-    int		retval = FALSE;
+    char_u	*acmd_fname;
+    char_u	**pp;
 
     if (new_dir == NULL || allbuf_locked())
 	return FALSE;
@@ -7415,38 +7416,32 @@
     {
 	emsg(_(e_command_failed));
 	vim_free(pdir);
+	return FALSE;
     }
+
+    if (scope == CDSCOPE_WINDOW)
+	pp = &curwin->w_prevdir;
+    else if (scope == CDSCOPE_TABPAGE)
+	pp = &curtab->tp_prevdir;
     else
+	pp = &prev_dir;
+    vim_free(*pp);
+    *pp = pdir;
+
+    post_chdir(scope);
+
+    if (dir_differs)
     {
-	char_u  *acmd_fname;
-	char_u	**pp;
-
 	if (scope == CDSCOPE_WINDOW)
-	    pp = &curwin->w_prevdir;
+	    acmd_fname = (char_u *)"window";
 	else if (scope == CDSCOPE_TABPAGE)
-	    pp = &curtab->tp_prevdir;
+	    acmd_fname = (char_u *)"tabpage";
 	else
-	    pp = &prev_dir;
-	vim_free(*pp);
-	*pp = pdir;
-
-	post_chdir(scope);
-
-	if (dir_differs)
-	{
-	    if (scope == CDSCOPE_WINDOW)
-		acmd_fname = (char_u *)"window";
-	    else if (scope == CDSCOPE_TABPAGE)
-		acmd_fname = (char_u *)"tabpage";
-	    else
-		acmd_fname = (char_u *)"global";
-	    apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE,
-								curbuf);
-	}
-	retval = TRUE;
+	    acmd_fname = (char_u *)"global";
+	apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE,
+							    curbuf);
     }
-
-    return retval;
+    return TRUE;
 }
 
 /*
diff --git a/src/misc2.c b/src/misc2.c
index b6d5e06..fac836f 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1903,7 +1903,6 @@
 {
     char_u	old_dir[MAXPATHL];
     char_u	new_dir[MAXPATHL];
-    int		res;
 
     if (mch_dirname(old_dir, MAXPATHL) != OK)
 	*old_dir = NUL;
@@ -1913,16 +1912,15 @@
 
     if (pathcmp((char *)old_dir, (char *)new_dir, -1) == 0)
 	// nothing to do
-	res = OK;
-    else
-    {
-	res = mch_chdir((char *)new_dir) == 0 ? OK : FAIL;
+	return OK;
 
-	if (res == OK && trigger_autocmd != NULL)
-	    apply_autocmds(EVENT_DIRCHANGED, (char_u *)trigger_autocmd,
+    if (mch_chdir((char *)new_dir) != 0)
+	return FAIL;
+
+    if (trigger_autocmd != NULL)
+	apply_autocmds(EVENT_DIRCHANGED, (char_u *)trigger_autocmd,
 						       new_dir, FALSE, curbuf);
-    }
-    return res;
+    return OK;
 }
 #endif
 
diff --git a/src/version.c b/src/version.c
index b96637f..f1014b3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4283,
+/**/
     4282,
 /**/
     4281,
