Mercurial > vim
changeset 6345:9bc6ce142cc3 v7.4.505
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)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 05 Nov 2014 18:36:03 +0100 |
parents | 8a860e8b02e1 |
children | 3f635c133c03 |
files | src/os_win32.c src/version.c |
diffstat | 2 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/os_win32.c +++ b/src/os_win32.c @@ -6139,6 +6139,13 @@ mch_open(char *name, int flags, int mode } # 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 @@ mch_fopen(char *name, char *mode) * 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