diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-08-31 21:35:45 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-08-31 21:35:45 +0200 |
commit | 9e8dcf9d6fa15523800005a32d40cf0382178ab0 (patch) | |
tree | 6e5e9f22efaf70138f176affbb855cf151169b27 /src/iscygpty.c | |
parent | da73253a0b908bad03ddcd625fe3fb32008efbf6 (diff) | |
download | vim-git-9e8dcf9d6fa15523800005a32d40cf0382178ab0.tar.gz |
patch 8.0.1030: MS-Windows: wrong size computation in is_cygpty()v8.0.1030
Problem: MS-Windows: wrong size computation in is_cygpty().
Solution: Compute the size properly. (Ken Takata)
Diffstat (limited to 'src/iscygpty.c')
-rw-r--r-- | src/iscygpty.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/iscygpty.c b/src/iscygpty.c index d7037c56f..722f88f2f 100644 --- a/src/iscygpty.c +++ b/src/iscygpty.c @@ -2,7 +2,7 @@ * iscygpty.c -- part of ptycheck * https://github.com/k-takata/ptycheck * - * Copyright (c) 2015-2016 K.Takata + * Copyright (c) 2015-2017 K.Takata * * You can redistribute it and/or modify it under the terms of either * the MIT license (as described below) or the Vim license. @@ -27,6 +27,8 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef _WIN32 + #include <ctype.h> #include <io.h> #include <wchar.h> @@ -60,19 +62,19 @@ //#define USE_DYNFILEID #ifdef USE_DYNFILEID typedef BOOL (WINAPI *pfnGetFileInformationByHandleEx)( - HANDLE hFile, + HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, - LPVOID lpFileInformation, - DWORD dwBufferSize + LPVOID lpFileInformation, + DWORD dwBufferSize ); static pfnGetFileInformationByHandleEx pGetFileInformationByHandleEx = NULL; # ifndef USE_FILEEXTD static BOOL WINAPI stub_GetFileInformationByHandleEx( - HANDLE hFile, + HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, - LPVOID lpFileInformation, - DWORD dwBufferSize + LPVOID lpFileInformation, + DWORD dwBufferSize ) { return FALSE; @@ -111,7 +113,7 @@ int is_cygpty(int fd) return 0; #else HANDLE h; - int size = sizeof(FILE_NAME_INFO) + sizeof(WCHAR) * MAX_PATH; + int size = sizeof(FILE_NAME_INFO) + sizeof(WCHAR) * (MAX_PATH - 1); FILE_NAME_INFO *nameinfo; WCHAR *p = NULL; @@ -125,7 +127,7 @@ int is_cygpty(int fd) if (GetFileType(h) != FILE_TYPE_PIPE) { return 0; } - nameinfo = malloc(size); + nameinfo = malloc(size + sizeof(WCHAR)); if (nameinfo == NULL) { return 0; } @@ -178,4 +180,6 @@ int is_cygpty_used(void) return ret; } -/* vi:set ts=8 sts=4 sw=4 noet: */ +#endif /* _WIN32 */ + +/* vim: set ts=4 sw=4: */ |