diff --git a/libvips/iofuncs/util.c b/libvips/iofuncs/util.c index d445ff4e..8c13597e 100644 --- a/libvips/iofuncs/util.c +++ b/libvips/iofuncs/util.c @@ -586,6 +586,12 @@ vips__set_create_time( int fd ) SYSTEMTIME st; FILETIME ft; + /* Create time cannot be set on invalid or stream + * (stdin, stdout, stderr) file descriptors. + */ + if( fd < 3 ) + return; + if( (handle = (HANDLE) _get_osfhandle( fd )) == INVALID_HANDLE_VALUE ) return; GetSystemTime( &st ); @@ -635,7 +641,7 @@ vips__fopen( const char *filename, const char *mode ) fp = g_fopen( filename, mode ); #ifdef G_OS_WIN32 - if( mode[0] == 'w' ) + if( fp && mode[0] == 'w' ) vips__set_create_time( _fileno( fp ) ); #endif /*G_OS_WIN32*/