updated for version 7.4.505
Problem:    On MS-Windows when 'encoding' is a double-byte encoding a file
            name longer than MAX_PATH bytes but shorter than that in
            characters causes problems.
Solution:   Fail on file names longer than MAX_PATH bytes. (Ken Takata)
diff --git a/src/os_win32.c b/src/os_win32.c
index c03b963..fcfafa0 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -6139,6 +6139,13 @@
     }
 # endif
 
+    /* open() can open a file which name is longer than _MAX_PATH bytes
+     * and shorter than _MAX_PATH characters successfully, but sometimes it
+     * causes unexpected error in another part. We make it an error explicitly
+     * here. */
+    if (strlen(name) >= _MAX_PATH)
+	return -1;
+
     return open(name, flags, mode);
 }
 
@@ -6188,6 +6195,13 @@
 	 * the _wfopen() fails for missing wide functions. */
     }
 
+    /* fopen() can open a file which name is longer than _MAX_PATH bytes
+     * and shorter than _MAX_PATH characters successfully, but sometimes it
+     * causes unexpected error in another part. We make it an error explicitly
+     * here. */
+    if (strlen(name) >= _MAX_PATH)
+	return NULL;
+
     return fopen(name, mode);
 }
 #endif
diff --git a/src/version.c b/src/version.c
index 4bbc221..178a784 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    505,
+/**/
     504,
 /**/
     503,