@@ -175,7 +175,7 @@ bool ffSuppressIO(bool suppress)
175
175
static bool init = false;
176
176
static HANDLE hOrigOut = INVALID_HANDLE_VALUE ;
177
177
static HANDLE hOrigErr = INVALID_HANDLE_VALUE ;
178
- static HANDLE hNullFile = INVALID_HANDLE_VALUE ;
178
+ HANDLE hNullFile = ffGetNullFD () ;
179
179
static int fOrigOut = -1 ;
180
180
static int fOrigErr = -1 ;
181
181
static int fNullFile = -1 ;
@@ -187,7 +187,6 @@ bool ffSuppressIO(bool suppress)
187
187
188
188
hOrigOut = GetStdHandle (STD_OUTPUT_HANDLE );
189
189
hOrigErr = GetStdHandle (STD_ERROR_HANDLE );
190
- hNullFile = CreateFileW (L"NUL" , GENERIC_READ | GENERIC_WRITE , FILE_SHARE_WRITE , 0 , OPEN_EXISTING , 0 , NULL );
191
190
fOrigOut = _dup (STDOUT_FILENO );
192
191
fOrigErr = _dup (STDERR_FILENO );
193
192
fNullFile = _open_osfhandle ((intptr_t ) hNullFile , 0 );
@@ -352,3 +351,23 @@ const char* ffGetTerminalResponse(const char* request, int nParams, const char*
352
351
353
352
return NULL ;
354
353
}
354
+
355
+ FFNativeFD ffGetNullFD (void )
356
+ {
357
+ static FFNativeFD hNullFile = INVALID_HANDLE_VALUE ;
358
+ if (hNullFile != INVALID_HANDLE_VALUE )
359
+ return hNullFile ;
360
+ hNullFile = CreateFileW (
361
+ L"NUL" ,
362
+ GENERIC_READ | GENERIC_WRITE ,
363
+ FILE_SHARE_WRITE ,
364
+ 0 ,
365
+ OPEN_EXISTING ,
366
+ 0 ,
367
+ & (SECURITY_ATTRIBUTES ){
368
+ .nLength = sizeof (SECURITY_ATTRIBUTES ),
369
+ .lpSecurityDescriptor = NULL ,
370
+ .bInheritHandle = TRUE,
371
+ });
372
+ return hNullFile ;
373
+ }
0 commit comments