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,