diff --git a/src/fileio.c b/src/fileio.c
index e35ce8c..575efaf 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4423,17 +4423,17 @@
     int		(*checkitem)(void *context, char_u *name))
 {
     int			failed = FALSE;
-#ifdef MSWIN
+# ifdef MSWIN
     char_u		*buf, *p;
     int			ok;
     HANDLE		hFind = INVALID_HANDLE_VALUE;
     WIN32_FIND_DATAW    wfb;
     WCHAR		*wn = NULL;	// UTF-16 name, NULL when not used.
-#endif
+# endif
 
     ga_init2(gap, (int)sizeof(char *), 20);
 
-#ifdef MSWIN
+# ifdef MSWIN
     buf = alloc(MAXPATHL);
     if (buf == NULL)
 	return FAIL;
@@ -4498,7 +4498,7 @@
 
     vim_free(buf);
     vim_free(wn);
-#else
+# else
     DIR		*dirp;
     struct dirent *dp;
     char_u	*p;
@@ -4547,7 +4547,7 @@
 
 	closedir(dirp);
     }
-#endif
+# endif
 
     if (!failed && gap->ga_len > 0)
 	sort_strings((char_u **)gap->ga_data, gap->ga_len);
diff --git a/src/filepath.c b/src/filepath.c
index 4517f41..9a5d127 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -1256,41 +1256,6 @@
 }
 
 /*
- * Evaluate "expr" (= "context") for readdir().
- */
-    static int
-readdir_checkitem(void *context, char_u *name)
-{
-    typval_T	*expr = (typval_T *)context;
-    typval_T	save_val;
-    typval_T	rettv;
-    typval_T	argv[2];
-    int		retval = 0;
-    int		error = FALSE;
-
-    if (expr->v_type == VAR_UNKNOWN)
-	return 1;
-
-    prepare_vimvar(VV_VAL, &save_val);
-    set_vim_var_string(VV_VAL, name, -1);
-    argv[0].v_type = VAR_STRING;
-    argv[0].vval.v_string = name;
-
-    if (eval_expr_typval(expr, argv, 1, &rettv) == FAIL)
-	goto theend;
-
-    retval = tv_get_number_chk(&rettv, &error);
-    if (error)
-	retval = -1;
-    clear_tv(&rettv);
-
-theend:
-    set_vim_var_string(VV_VAL, NULL, 0);
-    restore_vimvar(VV_VAL, &save_val);
-    return retval;
-}
-
-/*
  * Create the directory in which "dir" is located, and higher levels when
  * needed.
  * Return OK or FAIL.
@@ -1386,6 +1351,41 @@
 }
 
 /*
+ * Evaluate "expr" (= "context") for readdir().
+ */
+    static int
+readdir_checkitem(void *context, char_u *name)
+{
+    typval_T	*expr = (typval_T *)context;
+    typval_T	save_val;
+    typval_T	rettv;
+    typval_T	argv[2];
+    int		retval = 0;
+    int		error = FALSE;
+
+    if (expr->v_type == VAR_UNKNOWN)
+	return 1;
+
+    prepare_vimvar(VV_VAL, &save_val);
+    set_vim_var_string(VV_VAL, name, -1);
+    argv[0].v_type = VAR_STRING;
+    argv[0].vval.v_string = name;
+
+    if (eval_expr_typval(expr, argv, 1, &rettv) == FAIL)
+	goto theend;
+
+    retval = tv_get_number_chk(&rettv, &error);
+    if (error)
+	retval = -1;
+    clear_tv(&rettv);
+
+theend:
+    set_vim_var_string(VV_VAL, NULL, 0);
+    restore_vimvar(VV_VAL, &save_val);
+    return retval;
+}
+
+/*
  * "readdir()" function
  */
     void
diff --git a/src/version.c b/src/version.c
index 6e598e5..aae2526 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    209,
+/**/
     208,
 /**/
     207,
