Chip Davis (@cdavis5e) commented about dlls/msvcrt/environ.c:
> /*********************************************************************
> * _wputenv_s (MSVCRT.@)
> */
> -int CDECL _wputenv_s(const wchar_t *name, const wchar_t *value)
> +errno_t CDECL _wputenv_s(const wchar_t *name, const wchar_t *value)
> {
> - int ret;
> + errno_t ret = 0;
>
> TRACE("%s %s\n", debugstr_w(name), debugstr_w(value));
>
> if (!MSVCRT_CHECK_PMT(name != NULL)) return -1;
> if (!MSVCRT_CHECK_PMT(value != NULL)) return -1;
I hate to be the bearer of bad news, since this was already merged, but it looks like you missed these two.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1135#note_11787
Interpreting the fist two bytes of the `sockaddr` struct as `sa_family`
produces incorrect behaviour on macOS and (presumbly) BSD.
This change uses both Unix and Windows socket headers to convert the libpcap provided sockaddr before duplicating it.
This fixes sockaddr being always NULL on macOS/BSD and ipv6 addresses not working in general since `AF_INET6` differs on Windows(23), macOS(30) and Linux(10)
For reference https://www.ibm.com/docs/en/i/7.3?topic=family-af-inet-address and this is from the <sys/socket.h> on macOS
```
/*
* [XSI] Structure used by kernel to store most addresses.
*/
struct sockaddr {
__uint8_t sa_len; /* total length */
sa_family_t sa_family; /* [XSI] address family */
char sa_data[14]; /* [XSI] addr value (actually larger) */
};
```
--
v4: wpcap: Convert unix sockaddr to win32 sockaddr
https://gitlab.winehq.org/wine/wine/-/merge_requests/1015
The whole joystick list is refreshed anyway, so probably no reason to track the delay per joystick.
Fixes FPS drops happening each 2-3 seconds in Super House of Dead Ninjas. The game normally calls joyGetPosEx() for joystick 0 only, but once per second it scans all the 16 possible joysticks and for 15 of those joyGetPosEx() results in lengthy joystick list refresh, causing FPS drop in this otherwise not demanding game.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1142
Interpreting the fist two bytes of the `sockaddr` struct as `sa_family`
produces incorrect behaviour on macOS and (presumbly) BSD.
This change is however still backwards compatible with Linux since
`sa_family` is of effective type `uint8_t` and `sa_len` is currently disregarded.
For reference https://www.ibm.com/docs/en/i/7.3?topic=family-af-inet-address and this is from the <sys/socket.h> on macOS
```
/*
* [XSI] Structure used by kernel to store most addresses.
*/
struct sockaddr {
__uint8_t sa_len; /* total length */
sa_family_t sa_family; /* [XSI] address family */
char sa_data[14]; /* [XSI] addr value (actually larger) */
};
```
--
v2: wpcap: Convert unix sockaddr to win32 sockaddr
wpcap: Use oblique struct for pcap sockaddr
https://gitlab.winehq.org/wine/wine/-/merge_requests/1015
On Fri Oct 21 23:19:45 2022 +0000, Hans Leidekker wrote:
> We should move conversion of the sockaddr structures to the Unix side.
> That way we can get the definitions from the Unix headers, though we
> still need to allocate memory for the structures on the PE side.
To leave the allocation on the PE side I left the sockaddr duplication more or less untouched and fix up the input address on the Unix side before.
I hope this is alright (seemed to work fine during testing at least)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1015#note_11774