From b51df176a874c7c360a3584d3d3fa2c02d7c68b4 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Tue, 20 Dec 2011 08:59:09 +0000 Subject: PR#5416: better implementation of set/clear_close_on_exec git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@11888 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- otherlibs/win32unix/close_on.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'otherlibs/win32unix/close_on.c') diff --git a/otherlibs/win32unix/close_on.c b/otherlibs/win32unix/close_on.c index b64dd44dd..03ff2b894 100644 --- a/otherlibs/win32unix/close_on.c +++ b/otherlibs/win32unix/close_on.c @@ -19,17 +19,14 @@ int win_set_inherit(value fd, BOOL inherit) { - HANDLE oldh, newh; - - oldh = Handle_val(fd); - if (! DuplicateHandle(GetCurrentProcess(), oldh, - GetCurrentProcess(), &newh, - 0L, inherit, DUPLICATE_SAME_ACCESS)) { + /* According to the MSDN, SetHandleInformation may not work + for console handles on WinNT4 and earlier versions. */ + if (! SetHandleInformation(Handle_val(fd), + HANDLE_FLAG_INHERIT, + inherit ? HANDLE_FLAG_INHERIT : 0)) { win32_maperr(GetLastError()); return -1; } - Handle_val(fd) = newh; - CloseHandle(oldh); return 0; } -- cgit v1.2.3-70-g09d2