The Windows 11 message failure only seems to reproduce in a full test run, so we have to make an MR to investigate. I think it's clear with current results that just adjusting the expected sequence isn't going to be a solution.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5408
See also https://bugs.winehq.org/show_bug.cgi?id=56361
This patch makes piped commands work like for example "echo os get version|wmic" or "type file.txt | wmic" where file.txt contains some commands.
(probably used by program in aforementioned bugreport)
Also support interactive mode (wine wmic.exe)
Marked for now as draft.
--
v7: wmic.exe: Support interactive mode and piped commands.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5402
Fixes Sim City 3000 Building Architect.
--
v5: ddraw/tests: Add tests for multiple devices.
ddraw: Support multiple devices per ddraw object.
ddraw: Sync wined3d render target in d3d_device_sync_rendertarget().
ddraw: Store wined3d state in d3d_device.
wined3d: Factor out wined3d_texture_set_lod() function.
ddraw: Don't apply state in ddraw_surface_blt().
ddraw: Store matrix handle in the global table.
ddraw: Store surface handles in the global table.
ddraw: Store material handles in the global table.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5329
Do we always reallocate to larger size? It is currently reallocated based on the actual message size returned by the server, while buffer_size in peek_message may be bigger (and it is first allocated to 1024 bytes). Granted, I only reproduced the actual memory corruption with Proton, but it seems to me that in this regard the handling is the same.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5392#note_66132
We only reallocate the buffer to larger size, so I don't see how we can write past the allocated memory. Still, we potentially miss some opportunities to reuse the buffer, so better tracking of the size seems good to me, but the commit message could be adjusted.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5392#note_66130
Jacek Caban (@jacek) commented about dlls/win32u/message.c:
> }
>
> /* make sure that there is space for 'size' bytes in buffer, growing it if needed */
> -static inline void *get_buffer_space( void **buffer, size_t size, size_t prev_size )
> +static inline void *get_buffer_space( void **buffer, size_t size, size_t *prev_size )
This is no longer "prev", `buffer_size` would be a better name after this change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5392#note_66129
Jacek Caban (@jacek) commented about dlls/win32u/message.c:
> {
> if (*prev_size < size)
> {
> - *buffer = malloc( size );
> + *buffer = realloc( *buffer, size );
This leaks on error, we could leave the buffer unchanged in that case.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5392#note_66128