On Sat Oct 22 13:16:09 2022 +0000, Bartosz Kosiorek wrote:
> changed this line in [version 16 of the diff](/wine/wine/-/merge_requests/1120/diffs?diff_id=15105&start_sha=01947548572fd5e442ee7677a63d2ff3c0f166e2#18ec41aa1588580e1f59f4c1c498c00b98b78b89_1012_1012)
true, fixes.
Thanks!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1120#note_11802
As far as my testing goes, the message box is never shown on Windows when abort() is called with retail runtime is used, regardless of error mode and abort behaviour. That is not the case with _assert which still can show a dialog even in release mode.
It happens rather often that an app meets the error condition during the process exit and that goes silent on Windows while we display the abort dialog on app's exit.
The test program below shows that (and the same behaviour is, e. g., with ucrtbase vs ucrtbased).
```
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
void CDECL _set_app_type(int app_type);
#define D(name) static typeof(name) *p_##name
#define L(name) p_##name = (void *)GetProcAddress(hdll, #name); if (!p_##name) printf("NULL %s.\n", #name)
D(abort);
D(_set_app_type);
D(_set_abort_behavior);
D(_set_error_mode);
int main(int argc, char *argv[])
{
HMODULE hdll = LoadLibraryA("msvcrt.dll");
printf("hdll %p.\n", hdll);
L(_set_app_type);
if (!p__set_app_type)
if (!(p__set_app_type = (void *)GetProcAddress(hdll, "__set_app_type")))
printf("NULL p__set_app_type.\n");
L(abort);
L(_set_abort_behavior);
L(_set_error_mode);
p__set_app_type(2);
if (p__set_abort_behavior)
p__set_abort_behavior(_WRITE_ABORT_MSG, _WRITE_ABORT_MSG);
p__set_error_mode(_OUT_TO_MSGBOX);
p_abort();
}
```
--
v3: msvcrt: Display message box in abort() for specific CRT versions only.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1128
--
v4: ntdll/tests: Add more tests for \Device\NamedPipe and \Device\NamedPipe\.
ntdll/tests: Add tests for pipe names.
kernel32/tests: Add test for pipe name with a trailing backslash.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1070
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