From 6b29b0e809b14e41def8976190d24f0babddd95c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 19 Jan 2010 16:22:03 +0100 Subject: [PATCH] updated for version 7.2.338 Problem: Part of FD_CLOEXEC change is missing. Solution: Include source file skipped because of typo. --- src/ex_cmds2.c | 23 +++++++++++++++++++---- src/version.c | 2 ++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 39ed496fc..6adb07188 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -2802,20 +2802,35 @@ source_level(cookie) static char_u *get_one_sourceline __ARGS((struct source_cookie *sp)); -#if defined(WIN32) && defined(FEAT_CSCOPE) +#if (defined(WIN32) && defined(FEAT_CSCOPE)) || defined(HAVE_FD_CLOEXEC) +# define USE_FOPEN_NOINH static FILE *fopen_noinh_readbin __ARGS((char *filename)); /* * Special function to open a file without handle inheritance. + * When possible the handle is closed on exec(). */ static FILE * fopen_noinh_readbin(filename) char *filename; { - int fd_tmp = mch_open(filename, O_RDONLY | O_BINARY | O_NOINHERIT, 0); + int fd_tmp = mch_open(filename, O_RDONLY +# ifdef WIN32 + O_BINARY | O_NOINHERIT +# endif + , 0); if (fd_tmp == -1) return NULL; + +# ifdef HAVE_FD_CLOEXEC + { + int fdflags = fcntl(fd_tmp, F_GETFD); + if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0) + fcntl(fd_tmp, F_SETFD, fdflags | FD_CLOEXEC); + } +# endif + return fdopen(fd_tmp, READBIN); } #endif @@ -2895,7 +2910,7 @@ do_source(fname, check_other, is_vimrc) apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf); #endif -#if defined(WIN32) && defined(FEAT_CSCOPE) +#ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); @@ -2916,7 +2931,7 @@ do_source(fname, check_other, is_vimrc) *p = '.'; else *p = '_'; -#if defined(WIN32) && defined(FEAT_CSCOPE) +#ifdef USE_FOPEN_NOINH cookie.fp = fopen_noinh_readbin((char *)fname_exp); #else cookie.fp = mch_fopen((char *)fname_exp, READBIN); diff --git a/src/version.c b/src/version.c index 636a56dba..1fa9dbeb6 100644 --- a/src/version.c +++ b/src/version.c @@ -681,6 +681,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 338, /**/ 337, /**/ -- 2.50.1