diff --git a/README.md b/README.md index 26c49bd5..44be52ad 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [17]:** +**Bug fixes and features included in the next upcoming release [18]:** * Add implementation for mfplat.MFTEnum ([Wine Bug #39309](https://bugs.winehq.org/show_bug.cgi?id=39309)) * Add implementation for msidb commandline tool @@ -45,6 +45,7 @@ Included bug fixes and improvements * Do not wait for hook thread startup in IDirectInput8::Initialize ([Wine Bug #21403](https://bugs.winehq.org/show_bug.cgi?id=21403)) * Fix calculation of listbox size when horizontal scrollbar is present ([Wine Bug #38142](https://bugs.winehq.org/show_bug.cgi?id=38142)) * Implement additional stub functions in authz.dll +* Implement ws2_32.InetPtonA/W functions * Make ddraw1 and ddraw_surface1 vtable as writable * Pass cookie by reference to msvcrt_local_unwind4 in _seh_longjmp_unwind4 ([Wine Bug #39356](https://bugs.winehq.org/show_bug.cgi?id=39356)) * Protect TVM_GETITEM from invalid item pointers ([Wine Bug #33001](https://bugs.winehq.org/show_bug.cgi?id=33001)) diff --git a/debian/changelog b/debian/changelog index 0f7f7135..2ac3366b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -28,6 +28,7 @@ wine-staging (1.7.52) UNRELEASED; urgency=low * Added patch to mark WritePrivateProfileStringA as hotpatchable. * Added patch to make ddraw1 and ddraw_surface1 vtable as writable. * Added patch for implementation of mfplat.MFTEnum. + * Added patch to implement ws2_32.InetPtonA/W functions. * Removed patch to fix possible memory leak in netprofm init_networks (fixed upstream). * Removed patch for stub of dwmapi.DwmUpdateThumbnailProperties (accepted diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 094f4dfc..900d2ce7 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -328,6 +328,7 @@ patch_enable_all () enable_wpcap_Dynamic_Linking="$1" enable_ws2_32_APC_Performance="$1" enable_ws2_32_Connect_Time="$1" + enable_ws2_32_InetPtonW="$1" enable_ws2_32_TransmitFile="$1" enable_ws2_32_WSACleanup="$1" enable_ws2_32_WSAPoll="$1" @@ -1086,6 +1087,9 @@ patch_enable () ws2_32-Connect_Time) enable_ws2_32_Connect_Time="$2" ;; + ws2_32-InetPtonW) + enable_ws2_32_InetPtonW="$2" + ;; ws2_32-TransmitFile) enable_ws2_32_TransmitFile="$2" ;; @@ -6576,6 +6580,18 @@ if test "$enable_ws2_32_Connect_Time" -eq 1; then ) >> "$patchlist" fi +# Patchset ws2_32-InetPtonW +# | +# | Modified files: +# | * dlls/ws2_32/socket.c, dlls/ws2_32/ws2_32.spec +# | +if test "$enable_ws2_32_InetPtonW" -eq 1; then + patch_apply ws2_32-InetPtonW/0001-ws2_32-Implement-InetPtonA-W.patch + ( + echo '+ { "Michael Müller", "ws2_32: Implement InetPtonA/W.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ws2_32-TransmitFile # | # | This patchset fixes the following Wine bugs: diff --git a/patches/ws2_32-InetPtonW/0001-ws2_32-Implement-InetPtonA-W.patch b/patches/ws2_32-InetPtonW/0001-ws2_32-Implement-InetPtonA-W.patch new file mode 100644 index 00000000..d2111cc2 --- /dev/null +++ b/patches/ws2_32-InetPtonW/0001-ws2_32-Implement-InetPtonA-W.patch @@ -0,0 +1,77 @@ +From 2147c0778c3a31e9f2e16facdf49dedbf7257cf6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sat, 3 Oct 2015 00:38:08 +0200 +Subject: ws2_32: Implement InetPtonA/W. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Michael Müller +--- + dlls/ws2_32/socket.c | 30 ++++++++++++++++++++++++++++++ + dlls/ws2_32/ws2_32.spec | 4 +++- + 2 files changed, 33 insertions(+), 1 deletion(-) + +diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c +index 5cf3e0f..4c2428d 100644 +--- a/dlls/ws2_32/socket.c ++++ b/dlls/ws2_32/socket.c +@@ -7456,6 +7456,36 @@ INT WINAPI WS_inet_pton( INT family, PCSTR addr, PVOID buffer) + #endif + } + ++/*********************************************************************** ++* InetPtonW (WS2_32.@) ++*/ ++INT WINAPI InetPtonW(INT family, PCWSTR addr, PVOID buffer) ++{ ++ char *addrA; ++ int len; ++ INT ret; ++ ++ TRACE("family %d, addr '%s', buffer (%p)\n", family, addr ? debugstr_w(addr) : "(null)", buffer); ++ ++ if (!addr) ++ { ++ SetLastError(WSAEFAULT); ++ return SOCKET_ERROR; ++ } ++ ++ len = WideCharToMultiByte(CP_ACP, 0, addr, -1, NULL, 0, NULL, NULL); ++ if (!(addrA = HeapAlloc(GetProcessHeap(), 0, len))) ++ { ++ SetLastError(WSA_NOT_ENOUGH_MEMORY); ++ return SOCKET_ERROR; ++ } ++ WideCharToMultiByte(CP_ACP, 0, addr, -1, addrA, len, NULL, NULL); ++ ++ ret = WS_inet_pton(family, addrA, buffer); ++ ++ HeapFree(GetProcessHeap(), 0, addrA); ++ return ret; ++} + + /*********************************************************************** + * WSAStringToAddressA (WS2_32.80) +diff --git a/dlls/ws2_32/ws2_32.spec b/dlls/ws2_32/ws2_32.spec +index f7c6c2d..95c7da1 100644 +--- a/dlls/ws2_32/ws2_32.spec ++++ b/dlls/ws2_32/ws2_32.spec +@@ -53,6 +53,8 @@ + @ stdcall FreeAddrInfoW(ptr) + @ stdcall GetAddrInfoW(wstr wstr ptr ptr) + @ stdcall GetNameInfoW(ptr long ptr long ptr long long) ++@ stdcall InetPtonA(long str ptr) WS_inet_pton ++@ stdcall InetPtonW(long wstr ptr) + @ stdcall WSApSetPostRoutine(ptr) + @ stdcall WPUCompleteOverlappedRequest(long ptr long long ptr) + @ stdcall WSAAccept(long ptr ptr ptr long) +@@ -121,4 +123,4 @@ + @ stdcall getaddrinfo(str str ptr ptr) WS_getaddrinfo + @ stdcall getnameinfo(ptr long ptr long ptr long long) WS_getnameinfo + @ stdcall inet_ntop(long ptr ptr long) WS_inet_ntop +-@ stdcall inet_pton(long ptr ptr) WS_inet_pton ++@ stdcall inet_pton(long str ptr) WS_inet_pton +-- +2.5.1 + diff --git a/patches/ws2_32-InetPtonW/definition b/patches/ws2_32-InetPtonW/definition new file mode 100644 index 00000000..cff7fb08 --- /dev/null +++ b/patches/ws2_32-InetPtonW/definition @@ -0,0 +1 @@ +Fixes: Implement ws2_32.InetPtonA/W functions