We use 4*3 as the stride for GdipCreateBitmapFromScan0 in all test cases in test_CloneBitmapArea,
but bmp_3x3_data_24bpp_rgb only has 9 bytes per row. GdipCreateBitmapFromScan0 also expects the
stride to be a multiple of 4, so pad bmp_3x3_data_24bpp_rgb to be 12 bytes per row.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8218
On Fri Jun 6 18:17:35 2025 +0000, eric pouech wrote:
> @jacek just testing this (yeah a bit late sorry), it looks like the .pdb
> file only contains the public symbols.
> using: clang version 20.1.5
> do we need a later clang version?
I tested mostly with LLVM git, but version 19 seems to work too, unless I'm checking it wrong. For example, I get:
```
$ llvm-pdbutil dump --symbols programs/notepad/x86_64-windows/notepad.pdb |grep NOTEPAD_WndProc
7468 | S_LPROC32 [size = 56] `NOTEPAD_WndProc`
```
Do you not see such symbols in your build or did you mean something else?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8193#note_105685
--
v3: widl: Add rows for the requires keyword.
widl: Add rows for the exclusiveto attribute.
widl: Add rows for the uuid attribute.
widl: Add rows for the interface type.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8222
According to a comment in emf_create, description is expected to be "App name\0Title\0\0". But in
the test cases we only ever passed "winetest\0", so emf_create reads out-of-bound trying to find the
title.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8219
IWinInetHttpInfo_QueryInfo returns a multibyte string, not a wide string. We
were also wrongly expecting it to have a NUL terminator.
* * *
this one doesn't feel good. IWinInetHttpInfo_QueryInfo calls HttpInfo_QueryInfo (urlmon), which calls HttpQueryInfoA (wininet), so it returns char*. but inside, HttpQueryInfoA is calling HttpQueryInfoW and does charset conversion. so we are converting the string to multibyte and back.
maybe there's an API that returns wchar* i don't know about.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8228
This MR does:
- improve startup time when loading a large PDB file
(a chromium based PDB file (larger than 4G) now loads in 3,5s)
(at the begining of this rewrite, loading the very same PDB file
ended with a reboot triggered by the Linux OOM after 30 minutes
of heavy swap)
- finally untie the new PDB backend for the old one (they are now
considered as two independant debug formats, so that we can
eventually drop the old one at some point)
--
v2: dbghelp: Let new PDB reader exist independantly of the old one.
dbghelp: Rename declarations for old PBD backend.
dbghelp: Simplify signature of PDB unwinders.
dbghelp: Get fpo stream information directly in new PDB reader.
dbghelp: Speed up global symbols at startup.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8225
getItemAndInstanceFromTable only checks if the table is NULL, but didn't check
if it actually contains any entries. It just assumes it does and will return
index 1 in some cases, resulting in out-of-bound access of the table down the
line.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8230
If the "Properties" button is clicked in the printdlg it opens the print properties dlg. The problem is the values set in the properties dlg don't get passed through correctly to the final printing stage. This prevents properties like duplex and page size from working.
--
v4: comdlg32: Don't use a shadow devmode structure in PrintDlgA.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgA.
comdlg32: Don't use a shadow devmode structure in PrintDlgW.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgW.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8220
please amend the tests in the `---------- Testing copy part` (after line 3387 in test_builtins.cmd), the tests you've amended are meant to test the return codes, not really the final behavior)
and likely all these tests up to the ascii/binary part should be amended to check whether the names are printed or not
if needed, you can work around builtin find.exe missing the /c switch by using
```
:count_lines
@set "lines=0"
@for /F %%a in (%1) do set /A lines+=1
@exit /b %lines%
```
using `call :count_lines <file>` and you'll get the number of lines in %errorlevel% variable (but IMO in most of the cases testing for a file name printed should serve the same purpose)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8200#note_105647
If the "Properties" button is clicked in the printdlg it opens the print properties dlg. The problem is the values set in the properties dlg don't get passed through correctly to the final printing stage. This prevents properties like duplex and page size from working.
--
v3: comdlg32: Don't use a shadow devmode structure in PrintDlgA.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgA.
comdlg32: Don't use a shadow devmode structure in PrintDlgW.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgW.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8220
--
v2: widl: Add rows for the requires keyword.
widl: Add rows for the exclusiveto attribute.
widl: Add rows for the uuid attribute.
widl: Add rows for the interface type.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8222
This MR does:
- improve startup time when loading a large PDB file
(a chromium based PDB file (larger than 4G) now loads in 3,5s)
(at the begining of this rewrite, loading the very same PDB file
ended with a reboot triggered by the Linux OOM after 30 minutes
of heavy swap)
- finally untie the new PDB backend for the old one (they are now
considered as two independant debug formats, so that we can
eventually drop the old one at some point)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8225
The read loop could exit while a async read request is still in flight, which
could complete after test_read_device has returned. This results in a stack
use-after-return of `overlapped`.
* * *
Finally had something caught by the unix side AddressSanitizer, PE ASan wouldn't
have caught this.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8224
On Windows, applications can disable titlebar by extending the client rect to a bigger rect which will cover the area of the titlebar from WM_NCCALCSIZE: https://learn.microsoft.com/en-us/windows/win32/dwm/customframe#removing-th…
Our current x11 and Mac driver doesn't handle this case.
Attached is a test case for reproducing the issue.
[hide_caption.c](/uploads/46a725e32569a6a0a929a0f183cf9ed8/hide_caption.c)
--
v2: winemac.drv: Disable native titlebar while lacking enough space for SM_CYCAPTION.
winex11.drv: Disable native titlebar while lacking enough space for SM_CYCAPTION.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7024
When button_count is 0, we would allocate 0 bytes for line_widths, but later line_count would be 1
so we would still try to access line_widths[0] which is out-of-bound.
--
v2: comctl32: Make sure line_widths is big enough.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8205
I have no idea what the previous test was trying to do, but it was clearly wrong and misleading. First, it placed the fragment for no reason in file_name_buf because it then replaced it with a NUL, making you believe it's part of it but when it really was not. Then, it opened the original index.html to write XXX to it, so the fragment filename never actually existed in the first place, and was never tested.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8221
Compositors send a "done" event after every text-input commit, even if
the reported state (preedit etc) hasn't changed. Acting on such events
is at best wasteful, but can additionally lead to incorrect IME related
effects (e.g., deleting the currently selected text), so ignore them,
similarly to what Qt and GTK do.
The first commit performs some state related cleanups.
--
This solves an IME problem I have been experiencing with compositors that support text-input-v3 (e.g., kwin).
1. Run notepad
2. Write some text
3. Try to select text
Expected result: text is selected
Actual result: text is deleted
What happens is that while the user is selecting text the driver gets a series of `SetIMECompositionRect` callback which cause a series of text-input-v3 `set_cursor_rectangle`-`commit` requests. These `commit`s elicit `done` events from the compositor with no state changes, which we interpret as "clear the composition string" (and by extension the active selection), because that's what such states normally means, and forward them to windows IME.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8196
If the "Properties" button is clicked in the printdlg it opens the print properties dlg. The problem is the values set in the properties dlg don't get passed through correctly to the final printing stage. This prevents properties like duplex and page size from working.
--
v2: comdlg32: Don't use a shadow devmode structure in PrintDlgA.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgA.
comdlg32: Don't use a shadow devmode structure in PrintDlgW.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgW.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8220