]> granicus.if.org Git - vim/commitdiff
updated for version 7.2.338 v7.2.338
authorBram Moolenaar <Bram@vim.org>
Tue, 19 Jan 2010 15:22:03 +0000 (16:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 19 Jan 2010 15:22:03 +0000 (16:22 +0100)
Problem:    Part of FD_CLOEXEC change is missing.
Solution:   Include source file skipped because of typo.

src/ex_cmds2.c
src/version.c

index 39ed496fc7a491a7033bfa9670e3fe66b0b2551f..6adb071889d92b5057bfcc8c761eb31c4d472ce4 100644 (file)
@@ -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);
index 636a56dbaf7cebac165e625c5e6641673324d757..1fa9dbeb6017bc8eef2595902934c853f469af45 100644 (file)
@@ -681,6 +681,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    338,
 /**/
     337,
 /**/