--
v2: crypt32: Resync world store for default engines in get_chain_engine().
crypt32: Only sync registry store if registry has changed.
crypt32: Do not temporary delete contexts in I_CertUpdateStore().
crypt32: Lock store in MemStore_deleteContext().
crypt32/tests: Add test for chain engine cache update.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7377
This fixes https://bugs.winehq.org/show_bug.cgi?id=52094.
For reference, here's how current_modref is being passed around (before this patch):
```mermaid
graph TB
fii["fixup_imports_ilonly<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
fi["fixup_imports<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
pa["process_attach<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
ld[load_dll]
id["import_dll<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
bin["build_import_name<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
foe["find_ordinal_export<br><em style='color:#0f0'>(uses current_modref for relay)</em>"]
ffe["find_forwarded_export<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
fne[find_named_export]
MI[MODULE_InitDLL]
fii --> ld
fi --> id
pa --> MI -.-> DllMain
id --> bin
id --> ld
id --> foe
id --> fne --> foe --> ffe --> foe
ffe --> fne
ffe --> bin
style DllMain color:red;
```
--
v14: ntdll: Remove superflous NULL check for importer.
ntdll: Properly track refcount on dynamic imports of export forwarders.
ntdll: Explicitly ignore dynamic (GetProcAddress) importers as relay/snoop user module.
ntdll: Eagerly call process_attach() on dynamic imports of export forwarders.
ntdll: Properly track refcount on static imports of export forwarders.
ntdll: Register module dependency for export forwarders regardless of whether the dependency is already loaded.
ntdll: Don't re-add a module dependency if it already exists.
ntdll: Sink module dependency registration towards the end of the
https://gitlab.winehq.org/wine/wine/-/merge_requests/7
Startup and lock counts in native Windows are separate, and the lock count does not decrease when an async result is freed if the platform has been started.
--
v8: rtworkq: Do not cancel pending callbacks when closing a thread pool.
rtworkq/tests: Test queue shutdown with pending items.
rtworkq/tests: Test scheduled items.
mfplat/tests: Check for async result release after canceling work and shutting down.
mfplat/tests: Release callback2 in test_event_queue().
mfplat: Free the inner cookie passed to resolver_create_cancel_object().
https://gitlab.winehq.org/wine/wine/-/merge_requests/7174
--
v5: rtworkq: Support putting work on any id in RTWQ_CALLBACK_QUEUE_PRIVATE_MASK.
rtworkq: Support putting work on RTWQ_CALLBACK_QUEUE_UNDEFINED.
rtworkq/tests: Test putting work on an undefined queue id.
mfplat/tests: Test putting work on an undefined queue id.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7173
You are right.
`while (p > *value && isspace(p) --p;` will lost a character of the value, such as `{'F', 'r', 'o', 'm', ' ', ' ', '\r', ' ', 'v', '\r', '\0'}`.
This is a test string with value_len less than 0, `{'F', 'r', 'o', 'm', ' ', ' ', '\r', ' ', '\r', '\n', '\0'}`
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7363#note_95338
Startup and lock counts in native Windows are separate, and the lock count does not decrease when an async result is freed if the platform has been started.
--
v7: rtworkq: Do not cancel pending callbacks when closing a thread pool.
rtworkq/tests: Test queue shutdown with pending items.
rtworkq/tests: Test scheduled items.
mfplat/tests: Check for async result release after canceling work and shutting down.
mfplat/tests: Release callback2 in test_event_queue().
mfplat: Free the inner cookie passed to resolver_create_cancel_object().
https://gitlab.winehq.org/wine/wine/-/merge_requests/7174
This fixes https://bugs.winehq.org/show_bug.cgi?id=52094.
For reference, here's how current_modref is being passed around (before this patch):
```mermaid
graph TB
fii["fixup_imports_ilonly<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
fi["fixup_imports<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
pa["process_attach<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
ld[load_dll]
id["import_dll<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
bin["build_import_name<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
foe["find_ordinal_export<br><em style='color:#0f0'>(uses current_modref for relay)</em>"]
ffe["find_forwarded_export<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
fne[find_named_export]
MI[MODULE_InitDLL]
fii --> ld
fi --> id
pa --> MI -.-> DllMain
id --> bin
id --> ld
id --> foe
id --> fne --> foe --> ffe --> foe
ffe --> fne
ffe --> bin
style DllMain color:red;
```
--
v13: ntdll: Remove superflous NULL check for importer.
ntdll: Properly track refcount on dynamic imports of export forwarders.
ntdll: Explicitly ignore dynamic (GetProcAddress) importers as relay/snoop user module.
ntdll: Properly track refcount on static imports of export forwarders.
ntdll: Register module dependency for export forwarders regardless of whether the dependency is already loaded.
ntdll: Don't re-add a module dependency if it already exists.
ntdll: Register module dependency for export forwarders only after successful resolution.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7
Succeeding tests are printed out because we use elapsed time for JUnit test reports timings. Color codes are added on Gitlab MR only. Both are currently counting toward the test output threshold and they cause some ws2_32 and ieframe test failures on Gitlab MR when the tests are still under the threshold otherwise, as the nightly tests success can attest.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7384
Trivial, small set of cleanups patches to start with, non-controversial and NOP functionally speaking.
These are to help get the review process going in making ways towards the bar being lowered for contributing to the oleaut32 implementation.
Signed-off-by: Edward O'Callaghan <edward(a)antitrust.cc>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7375
Tidy Cauldron (2708320), a Unity game, uses EnumWindows() to find the first window in the current
thread and maximizes the window when changing to windowed mode. However, before this patch, the IME
UI window and the DXGI fallback device window are on top of the game window at creation and thus
they could get maximized instead. This causes the game window to lose focus and freeze.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7381