This MR intends to add the complex numbers related functions:
* cimag
* _FCbuild
* crealf
* cimagf
These functions are defined in dlls/msvcr120/math.c and mapped in dlls/msvcr120/msvcr120.spec and dlls/ucrbase/ucrbase.spec.
The related tests were added in dlls/mscr120/tests/msvcr120.c and result were checked.
--
v6: fixed msvcr120_app spec
Revert "fixed msvcr120_app spec" because of missing user info
winex11: Attach currently active Vulkan onscreen surface in vulkan_surface_update_offscreen().
win32u: Don't invalidate existing Vulkan surface when a new one is created for window.
win32u: Check for NULL hwnd before calling vulkan_surface_presented() driver callback.
win32u: Nullify surface hwnd when detaching Vulkan surface.
winex11: Allow Withdrawn requests to override Iconic <-> Normal transitions.
include: Add signbit declarations for c++.
dinput: Clamp FFB effect report value to the field range.
dinput/tests: Add more tests for force feedback.
win32u: Implement NtUserPostQuitMessage().
win32u: Implement NtUserMessageBeep().
win32u: Implement NtUserEnumClipboardFormats().
win32u: Implement NtUserCreateMenu() and NtUserCreatePopupMenu().
win32u: Implement NtUserGetThreadState().
win32u: Implement NtUserReleaseCapture().
win32u: Implement NtUserDestroyCaret().
hhctrl: Use wide character string literals.
cryptui: Use wide character string literals.
ntdll: Fix the return value of NtDelayExecution.
ntdll/tests: Add tests for NtDelayExecution and Sleep(Ex).
sapi: Remove some unnecessary traces.
sapi: Implement IStream methods for SpStream.
sapi: Implement ISpStream::GetFormat.
sapi: Implement ISpStream::Close.
sapi: Implement ISpStream::Set/GetBaseStream.
sapi: Adding missing interfaces for SpStream.
include: Use flexible array-member in some structure declarations.
include: Add a couple of definitions to mscvpdb.h.
include: Add some new definitions for dbghelp.h.
win32u: Use the first vertical alternates table regardless of script.
gdi32/tests: Add tests for script-independent vertical glyph lookup.
wineps: Use simple strings for glyph names.
wineps: Remove some unused AFM values.
wineps: Don't parse the glyph name or encoding when loading AFM files.
wineps: Don't store the glyph name or encoding for individual glyphs.
user32/tests: Add tests for WM_COPYDATA.
win32u: Allocate a separate user buffer when packing a large WM_COPYDATA message for user32.
wintypes: Stub of IRandomAccessStreamReferenceStatics interface.
wintypes: Stub of Windows.Storage.Streams.RandomAccessStreamReference runtimeclass.
wintypes: Return S_OK from data_writer_activation_factory_ActivateInstance().
wintypes: Stub of Windows.Storage.Streams.DataWriter runtimeclass.
wintypes: Reimplement Windows.Foundation.Metadata.{ApiInformation,PropertyValue} separately.
wintypes/tests: Add interface tests.
include: Don't import .idl when DO_NO_IMPORTS is defined.
shlwapi: Use wide character string literals.
winhlp32: Use wide character string literals.
tapi32: Use wide character string literals.
hhctrl: Fix spelling of "local" in OnTopicChange.
ntdll/tests: Add RtlRealSuccessor() tests.
ntdll: Implement RtlRealSuccessor().
ntdll/tests: Add RtlRealPredecessor() tests.
ntdll: Implement RtlRealPredecessor().
wine.inf: Pass command line arguments to msiexec.
wined3d: Add Nvidia RTX40xx series desktop models data.
wined3d: Add Nvidia RTX30xx series desktop models data.
prntvpt: Implement writing PageImageableSize capabilities.
prntvpt: Implement writing PageMediaSize capabilities.
wined3d/spirv: Implement alpha test.
wined3d: Feed alpha ref through a push constant buffer.
wined3d/glsl: Move legacy alpha test to shader_glsl_apply_draw_state().
wined3d/spirv: Implement flat shading.
wined3d: Use ps_compile_args in shader_spirv_compile_arguments.
wined3d: Bind the right push constant buffers when FFP is toggled.
ole32: Set property storage clsid on creation.
ole32: Fix IPropertyStorage::ReadMultiple return value when some properties are missing.
ole32: Add support for reading VT_R4 property.
secur32: Update max token size for Negotiate.
kerberos: Update sizes to match modern implementations.
propsys: Remove FIXME() from PropVariantChangeType().
kernel32/tests: Match the value in the debug message the test condition.
crypt32: Don't assert in Context_Release() on invalid refcount.
crypt32/tests: Add a test for deleting and adding certs during enumeration.
crypt32: Only remove cert from mem store list when deleting it.
crypt32: Release existing cert context in add_cert_to_store().
crypt32: Don't try to release zero-refcount context in MemStore_addContext().
crypt32: Factor out memstore_free_context() function.
crypt32: Release cert context in CertDeleteCertificateFromStore().
msvcp140: Fix field order in _Mtx_t.
msvcp140/tests: Add more tests for _Mtx_t.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7109
On Wed Jan 29 09:48:53 2025 +0000, Joe Souza wrote:
> After spending some time looking at the existing code, I find that it's
> not that far off from working properly. It correctly allows for
> multiple options to be specified on the command line, and correctly
> handles the exclusive options (i.e. of /N, /E, /S, /D, it correctly
> allows only one of these to take effect). What it gets wrong is that in
> Windows, the first of the exclusive options encountered takes
> precedence, where in current Wine code, it's the last exclusive option
> encountered that takes precedence. Current wine code also does not sort
> directory names for /G.
> All that in mind, the code does not need to be changed to allow multiple
> sort options to be passed to the qsort algorithm. We could clean up the
> use of global variables a bit, sort the directory names for /G, and fix
> the code such that /O by itself is implied /O:NE (which my prior
> proposed change did).
agreed
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7131#note_93185
Which is use after free since commit 278437b266ed97cebb8e1c14be6cfa2c4f440f07.
Thanks Bernhard Übelacker for spotting this (based on ASan validation).
For a general case I'd say we can have some tests intentionally doing use after free but it is not needed here.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7218
This PR updates the behaviour of `NtQueryDirectoryFile`, bringing it in line with current Windows behaviour. The need for this update was discovered when attempting to build the Unreal Engine with MSVC under Wine. In certain cases conditional include statements do not behave as expected, due to MSVC depending on undocumented behaviour of `NtQueryDirectoryFile`.
We ran tests on multiple versions of Windows, and discovered that the behaviour has changed since the original Wine implementation, but the documentation has not. The source code for our test tool, and a set of results can be found [here](https://github.com/TensorWorks/NtQueryDirectoryFile-Test). As of Windows 8, calling `NtQueryDirectoryFile` with a re-used handle, a new mask, and setting the `RestartScan` flag to True, causes the cached results to be erased and a new scan to be performed with the updated mask. Currently, Wine performs as did earlier versions of Windows, where the changed mask is ignored, and the cache is reused. This can cause `NtQueryDirectoryFile` under Wine to falsely report that files exist, when they do not.
This PR corrects this behaviour, invalidating the cache when required. Implementing this exposed further undocumented behaviour of `NtQueryDirectoryFile`, where a search for a non-existent file will return either `STATUS_NO_MORE_FILES` or `STATUS_NO_SUCH_FILE`, depending on whether or not the handle had been previously used regardless of the value of `RestartScan`. This was reflected in a `winetest` which allowed for the response to be either `STATUS_SUCCESS` or `STATUS_NO_MORE_FILES`.
This patch also adds unit tests for the new behaviour of `NtQueryDirectoryFile`. These tests pass when running `winetest` under Windows, and under Wine with these changes in place, but they will fail under older versions of Wine. If run under older versions of Windows the test suite will detect that this functionality is not supported, and will not run the updated tests.
--
v7: ntdll: Update NtQueryDirectoryFile to purge cache if scan is reset with a new mask
ntdll: Test updated NtQueryDirectoryFile mask reset behaviour
https://gitlab.winehq.org/wine/wine/-/merge_requests/6904