commit 941eaf9a9e586285d95610034da10fa63191bbbe
Author: Jim Hester <james.f.hester@gmail.com>
Date:   Wed Jan 10 13:35:06 2018 -0500

    Do not use unnamed structs on windows
    
    This generates a warning with mingw gcc

diff --git a/src/libuv-1.38.1/src/win/fs.c b/src/libuv-1.38.1/src/win/fs.c
index 11c7c13e..3340e820 100644
--- a/src/libuv/src/win/fs.c
+++ b/src/libuv/src/win/fs.c
@@ -319,11 +319,11 @@ INLINE static int fs__readlink_handle(HANDLE handle, char** target_ptr,
 
   if (reparse_data->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
     /* Real symlink */
-    w_target = reparse_data->SymbolicLinkReparseBuffer.PathBuffer +
-        (reparse_data->SymbolicLinkReparseBuffer.SubstituteNameOffset /
+    w_target = reparse_data->u.SymbolicLinkReparseBuffer.PathBuffer +
+        (reparse_data->u.SymbolicLinkReparseBuffer.SubstituteNameOffset /
         sizeof(WCHAR));
     w_target_len =
-        reparse_data->SymbolicLinkReparseBuffer.SubstituteNameLength /
+        reparse_data->u.SymbolicLinkReparseBuffer.SubstituteNameLength /
         sizeof(WCHAR);
 
     /* Real symlinks can contain pretty much everything, but the only thing */
@@ -362,10 +362,10 @@ INLINE static int fs__readlink_handle(HANDLE handle, char** target_ptr,
 
   } else if (reparse_data->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) {
     /* Junction. */
-    w_target = reparse_data->MountPointReparseBuffer.PathBuffer +
-        (reparse_data->MountPointReparseBuffer.SubstituteNameOffset /
+    w_target = reparse_data->u.MountPointReparseBuffer.PathBuffer +
+        (reparse_data->u.MountPointReparseBuffer.SubstituteNameOffset /
         sizeof(WCHAR));
-    w_target_len = reparse_data->MountPointReparseBuffer.SubstituteNameLength /
+    w_target_len = reparse_data->u.MountPointReparseBuffer.SubstituteNameLength /
         sizeof(WCHAR);
 
     /* Only treat junctions that look like \??\<drive>:\ as symlink. */
@@ -1118,7 +1118,7 @@ INLINE static int fs__stat_handle(HANDLE handle, uv_stat_t* statbuf,
                                             FileFsVolumeInformation);
 
   /* Buffer overflow (a warning status code) is expected here. */
-  if (io_status.Status == STATUS_NOT_IMPLEMENTED) {
+  if (io_status.u.Status == STATUS_NOT_IMPLEMENTED) {
     statbuf->st_dev = 0;
   } else if (NT_ERROR(nt_status)) {
     SetLastError(pRtlNtStatusToDosError(nt_status));
@@ -1627,7 +1627,7 @@ static void fs__create_junction(uv_fs_t* req, const WCHAR* path,
 
   /* Do a pessimistic calculation of the required buffer size */
   needed_buf_size =
-      FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer.PathBuffer) +
+      FIELD_OFFSET(REPARSE_DATA_BUFFER, u.MountPointReparseBuffer.PathBuffer) +
       JUNCTION_PREFIX_LEN * sizeof(WCHAR) +
       2 * (target_len + 2) * sizeof(WCHAR);
 
@@ -1638,7 +1638,7 @@ static void fs__create_junction(uv_fs_t* req, const WCHAR* path,
   }
 
   /* Grab a pointer to the part of the buffer where filenames go */
-  path_buf = (WCHAR*)&(buffer->MountPointReparseBuffer.PathBuffer);
+  path_buf = (WCHAR*)&(buffer->u.MountPointReparseBuffer.PathBuffer);
   path_buf_len = 0;
 
   /* Copy the substitute (internal) target path */
@@ -1666,8 +1666,8 @@ static void fs__create_junction(uv_fs_t* req, const WCHAR* path,
   len = path_buf_len - start;
 
   /* Set the info about the substitute name */
-  buffer->MountPointReparseBuffer.SubstituteNameOffset = start * sizeof(WCHAR);
-  buffer->MountPointReparseBuffer.SubstituteNameLength = len * sizeof(WCHAR);
+  buffer->u.MountPointReparseBuffer.SubstituteNameOffset = start * sizeof(WCHAR);
+  buffer->u.MountPointReparseBuffer.SubstituteNameLength = len * sizeof(WCHAR);
 
   /* Insert null terminator */
   path_buf[path_buf_len++] = L'\0';
@@ -1695,17 +1695,17 @@ static void fs__create_junction(uv_fs_t* req, const WCHAR* path,
   }
 
   /* Set the info about the print name */
-  buffer->MountPointReparseBuffer.PrintNameOffset = start * sizeof(WCHAR);
-  buffer->MountPointReparseBuffer.PrintNameLength = len * sizeof(WCHAR);
+  buffer->u.MountPointReparseBuffer.PrintNameOffset = start * sizeof(WCHAR);
+  buffer->u.MountPointReparseBuffer.PrintNameLength = len * sizeof(WCHAR);
 
   /* Insert another null terminator */
   path_buf[path_buf_len++] = L'\0';
 
   /* Calculate how much buffer space was actually used */
-  used_buf_size = FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer.PathBuffer) +
+  used_buf_size = FIELD_OFFSET(REPARSE_DATA_BUFFER, u.MountPointReparseBuffer.PathBuffer) +
     path_buf_len * sizeof(WCHAR);
   used_data_size = used_buf_size -
-    FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer);
+    FIELD_OFFSET(REPARSE_DATA_BUFFER, u.MountPointReparseBuffer);
 
   /* Put general info in the data buffer */
   buffer->ReparseTag = IO_REPARSE_TAG_MOUNT_POINT;
diff --git a/src/libuv/src/win/winapi.h b/src/libuv/src/win/winapi.h
index cc54b79b..f249b81f 100644
--- a/src/libuv/src/win/winapi.h
+++ b/src/libuv/src/win/winapi.h
@@ -4149,7 +4149,7 @@ typedef const UNICODE_STRING *PCUNICODE_STRING;
       struct {
         UCHAR  DataBuffer[1];
       } GenericReparseBuffer;
-    };
+    } u;
   } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
 #endif
 
@@ -4157,7 +4157,7 @@ typedef struct _IO_STATUS_BLOCK {
   union {
     NTSTATUS Status;
     PVOID Pointer;
-  };
+  } u;
   ULONG_PTR Information;
 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
 
diff --git a/src/libuv/src/win/winsock.c b/src/libuv/src/win/winsock.c
index e86d76b1..afe77e48 100644
--- a/src/libuv/src/win/winsock.c
+++ b/src/libuv/src/win/winsock.c
@@ -316,8 +316,8 @@ int WSAAPI uv_wsarecv_workaround(SOCKET socket, WSABUF* buffers,
     apc_context = NULL;
   }
 
-  iosb->Status = STATUS_PENDING;
-  iosb->Pointer = 0;
+  iosb->u.Status = STATUS_PENDING;
+  iosb->u.Pointer = 0;
 
   status = pNtDeviceIoControlFile((HANDLE) socket,
                                   overlapped->hEvent,
@@ -414,8 +414,8 @@ int WSAAPI uv_wsarecvfrom_workaround(SOCKET socket, WSABUF* buffers,
     apc_context = NULL;
   }
 
-  iosb->Status = STATUS_PENDING;
-  iosb->Pointer = 0;
+  iosb->u.Status = STATUS_PENDING;
+  iosb->u.Pointer = 0;
 
   status = pNtDeviceIoControlFile((HANDLE) socket,
                                   overlapped->hEvent,
@@ -506,7 +506,7 @@ int WSAAPI uv_msafd_poll(SOCKET socket, AFD_POLL_INFO* info_in,
     apc_context = NULL;
   }
 
-  iosb_ptr->Status = STATUS_PENDING;
+  iosb_ptr->u.Status = STATUS_PENDING;
   status = pNtDeviceIoControlFile((HANDLE) socket,
                                   event,
                                   NULL,
@@ -531,7 +531,7 @@ int WSAAPI uv_msafd_poll(SOCKET socket, AFD_POLL_INFO* info_in,
         return SOCKET_ERROR;
       }
 
-      status = iosb.Status;
+      status = iosb.u.Status;
     }
 
     CloseHandle(event);
