WineHQ

Wine Announcement

The Wine development release 7.18 is now available.

What's new in this release:
  - Character tables updated to Unicode 15.0.0.
  - Wow64 support in the macOS driver.
  - Async reader fixes in GStreamer support.
  - Various bug fixes.

The source is available at:

  https://dl.winehq.org/wine/source/7.x/wine-7.18.tar.xz

Binary packages for various distributions will be available from:

  https://www.winehq.org/download

You will find documentation on https://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check https://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 7.18 (total 20):

 - #31157  Multiple applications (FileMaker Pro 12-19, MyDiff) crash when trying to create/open sample solution ('ImmAssociateContext' should only generate 'WM_IME_SETCONTEXT' if window has focus)
 - #35478  Multiple applications and games need dsdmo.dll (DirectSound Effects)
 - #36312  valgrind shows a couple possible leaks in oledb32/tests/marshal.c
 - #36944  Hotel Giant 2 crashes frequently
 - #42751  Multiple applications crash on unimplemented function msvcr{100,110}.dll.?_Schedule@_StructuredTaskCollection@details@Concurrency@@QAEXPAV_UnrealizedChore@23@@Z (Gas Guzzlers Combat Carnage, Clip Studio Paint, Cube World, Intel ACAT)
 - #44314  Adobe FrameMaker 8: Installer aborts with the error "The wizard was interrupted..."
 - #48487  MSYS based Git 2.25 installer reports 'could not decode hex <hexstring>' (needs support for CryptStringToBinaryW CRYPT_STRING_HEX)
 - #48600  Bloomberg Terminal needs unimplemented function dbghelp.dll.SymSrvGetFileIndexInfo
 - #51404  Resident Evil 7 objects rendered with glitches (Vulkan renderer)
 - #52677  REVELPROG_IS crashes on unimplemented function winusb.dll.WinUsb_Free
 - #53430  urlmon:url fails due to unexpected redirection
 - #53458  windows.media.speech:speech - The 64-bit test_Recognition() gets unexpected ref count on Windows after ISpeechContinuousRecognitionSession_Release()
 - #53570  Visual C++ 2015-2019 crashes on launch
 - #53577  d3d9:device - test_scissor_size() fails on Windows 8+
 - #53578  msvfw32:mciwnd - test_MCIWndCreate() fails in Wine
 - #53609  Segmentation fault when starting Dosbox.exe in virtual desktop mode
 - #53614  KeePassXC crashes on unimplemented function msvcp140.dll.?ReportUnhandledError@_ExceptionHolder@details@Concurrency@@AEAAXXZ
 - #53626  Wine crash due to long filename when saving file in Framemaker
 - #53703  Wine crashes when setting a long window title.
 - #53706  NtDeviceIoControlFile() is quite slow when called with and invalid handle

----------------------------------------------------------------

Changes since 7.17:

Akihiro Sagawa (1):
      user32: Fix a memory allocation strategy.

Alexandre Julliard (22):
      configure: Use --disable-stdcall-fixup for all PE builds.
      kernel32/tests: Fix affinity test when there are too many CPUs.
      ntdll/tests: Fix affinity test when there are too many CPUs.
      ntoskrnl/tests: Fix affinity test when there are too many CPUs.
      oleaut32: Avoid spurious debug traces when FIXMEs are disabled.
      oleaut32: Check that the 32/64 syskind matches when getting a typelib from the cache.
      webservices/tests: Mark tests that fail on 64-bit as todo.
      d2d1/tests: Adjust geometry to make tests pass on all devices.
      winetest: Don't require an email if we have a URL.
      gdi32/tests: Mark some tests that fail without Vulkan as todo.
      vcomp/tests: Limit the number of nested threads.
      unicode: Update to Unicode 15.0.0.
      win32u: Fix Get/SetWindowWord behavior on 32-bit.
      winex11: Don't send WM_CANCELMODE to iconified windows.
      user32/tests: Fix a few more assumptions about window positions.
      ntdll/tests: Re-add workaround for check that is still broken on win7.
      winetest: Report failure for tests that print too much output.
      ntdll/tests: Don't run the stack growth tests too many times.
      d2d1/tests: Skip subsequent todo tests for unsupported properties.
      user32/tests: Only report the first todo of a failed message sequence.
      user32/tests: Don't print debug traces by default.
      advapi32/tests: Mark some failing tests as todo.

Alistair Leslie-Hughes (7):
      ws2_32: Return a valid value for WSAIoctl SIO_IDEAL_SEND_BACKLOG_QUERY.
      wininet: Clear cached credentials after the first failed attempt.
      oledb32/tests: Free returned property set memory.
      wininet: Use standard HTTP_ADD Flags.
      msdasql: Implement ICommandProperties GetProperties.
      msdasql: Implement ICommandProperties SetProperties.
      msdasql: Implement IColumnsRowset GetAvailableColumns.

André Zwing (1):
      ntdll: Fix ARM vs AMD64 typo.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Brendan Shanks (4):
      server: Remove 32-bit-specific macOS #ifdefs.
      server: Report errors on macOS when getting/setting debug registers.
      server: Write to correct context struct when getting debug registers on macOS.
      server: Use correct context struct and thread flavor when setting debug registers on macOS.

Connor McAdams (6):
      uiautomationcore: Implement UiaReturnRawElementProvider.
      uiautomationcore: Increment module reference count when starting provider thread.
      uiautomationcore: Shutdown provider thread when all returned nodes are released.
      uiautomationcore: Implement UiaNodeFromHandle.
      uiautomationcore: Create UI Automation client thread.
      uiautomationcore: Add tests for UiaNodeFromHandle.

David Kahurani (1):
      win32u: Use allocator mechanism to allocate DC attributes.

Davide Beatrici (9):
      winecoreaudio: Fix RegEnumKeyExW() call passing wrong unit for the buffer size.
      winecoreaudio: Switch to string as device identifier, to match other drivers.
      mmdevapi: Integrate winecoreaudio's additions in unixlib.h.
      winecoreaudio: Drop "unix_" prefix in unixlib enum, apply it to the functions instead.
      winecoreaudio: Adapt "create_stream_params" struct to mmdevapi's.
      winecoreaudio: Adapt "release_stream_params" struct to mmdevapi's.
      winecoreaudio: Adapt "release_render_buffer_params" struct to mmdevapi's.
      winecoreaudio: Adapt "get_capture_buffer_params" struct to mmdevapi's.
      winecoreaudio: Switch to mmdevapi's unixlib.h.

Eric Pouech (14):
      winedump: Harden reading PDB string table stream.
      dbghelp: Harden reading strings from string table.
      dbghelp: Correctly handle the absence of IPI stream.
      dbghelp: Support SymGetTypeInfo/TI_GET_LENGTH for variables.
      dbghelp: Displacements are optional.
      winedump: Print signed integers with %d.
      dbghelp: Support depth relating to top function for inline sites.
      dbghelp: Store all address ranges for inline sites.
      d3d10core/tests: Fix erroneous color parameter.
      d3d10core/tests: Introduce a clear_backbuffer_rtv() helper.
      d3d11/tests: Introduce a clear_rtv() helper.
      glu32: Fix GCC 12.2 warnings.
      jscript: Fix GCC 12.2 warning.
      avifil32: Fix GCC 12.2 warning (-Warray-bounds).

Etaash Mathamsetty (2):
      ntoskrnl: KeSetTargetProcessorDpcEx stub.
      ntoskrnl: Implement KeGetCurrentProcessorNumberEx.

Floris Renaud (1):
      po: Update Dutch translation.

Gabriel Ivăncescu (8):
      include: Add IDOMStorageEvent and DispDOMStorageEvent interfaces.
      mshtml: Move the MessageEvent construction to a helper.
      mshtml: Implement StorageEvent and send it when clearing the storage.
      mshtml: Send StorageEvents when setting an item.
      mshtml: Send StorageEvents when removing an existing item.
      mshtml/tests: Add tests for StorageEvents with parallel documents.
      mshtml: Don't expose document.onstorage for IE9+ modes.
      mshtml: Send StorageEvents to iframe windows properly.

Georg Lehmann (1):
      winevulkan: Update to VK spec version 1.3.228.

Gijs Vermeulen (2):
      dbghelp: Add SymSrvGetFileIndexInfo stub.
      ntdll: Add RtlDosPathNameToRelativeNtPathName_U.

Hans Leidekker (15):
      bcrypt: Support setting BCRYPT_CHAIN_MODE_CFB on keys.
      bcrypt: Add full support for algorithm pseudo-handles.
      bcrypt: Rename mode_id to chain_mode.
      appwiz.cpl: Use BCrypt algorithm pseudo-handles.
      appwiz.cpl: Use BCryptHash().
      crypt32: Use BCrypt algorithm pseudo-handles.
      dssenh: Use BCrypt algorithm pseudo-handles.
      fusion: Use BCrypt algorithm pseudo-handles.
      ncrypt: Use BCrypt algorithm pseudo-handles.
      rsaenh: Use BCrypt algorithm pseudo-handles.
      adsldp: Implement ADS_SEARCHPREF_SIZE_LIMIT.
      adsldp/tests: Limit the number of search results.
      adsldp/tests: Get rid of workarounds for Windows XP.
      winhttp/tests: Fix test failure caused by expired client certificate.
      secur32/tests: Fix test failure caused by expired client certificate.

Henri Verbeet (6):
      wined3d: Fix the sub-resource index validation in wined3d_texture_update_overlay().
      wined3d: Destroy the Vulkan command pool after cleaning up resources.
      d3d9/tests: The expected scissor rect after a reset is equal to the back-buffer dimensions.
      d3d11: Implement d3d11_input_layout_to_wined3d_declaration() on top of vkd3d_shader_parse_input_signature().
      d3d11/tests: Move the is_warp_device() call out of the loop in check_format_support().
      wined3d: Return bools from all return paths in wined3d_cs_map_upload_bo().

Jacek Caban (8):
      urlmon/tests: Make BINDSTATUS_DOWNLOADINGDATA optional in test_URLDownloadToFile_abort.
      wininet/tests: Collect persistent connection before running tests in test_async_HttpSendRequestEx.
      wininet/tests: Don't send two HTTP responses for a single request in server_thread.
      win32u: Introduce NtUserSendDriverMessage.
      winemac: Use platform-independent types for user callback params.
      winemac: Implement wow64 thunks.
      winevulkan: Introduce VkVariable.
      winevulkan: Use DECLSPEC_ALIGN instead of pshpack4.h.

Jacob Czekalla (3):
      notepad: Show status bar.
      notepad: Track and display line number and column.
      notepad: Show goto dialog box.

Jinoh Kang (3):
      include: Define atomic read/write helpers for 32-bit integers.
      concrt140: Use atomic write for releasing threadsafe_queue spin lock.
      msvcp90: Use atomic write for releasing threadsafe_queue spin lock.

Julian Klemann (9):
      widl: Use "cinterface(IInspectable)" for IInspectable signature.
      include/windows.devices.enumeration: Update file to newer formatting.
      include/windows.devices.enumeration: Define IDeviceInformationStatics2.
      windows.devices.enumeration: Replace STDMETHODCALLTYPE with WINAPI.
      windows.devices.enumeration: Create private header file.
      windows.devices.enumeration: Add IDeviceInformationStatics2 stub.
      windows.devices.enumeration: Add DeviceWatcher stub.
      windows.devices.enumeration: Implement Stopped handler for DeviceWatcher.
      windows.devices.enumeration/tests: Add test for Stopped DeviceWatcher event.

Mohamad Al-Jaf (2):
      include: Add winusb.h file.
      winusb: Add WinUsb_Free stub.

Nikolay Sivov (26):
      dwrite/layout: Use same logic for mapping both non-visual and visual runs.
      dwrite/layout: Keep system font collection for each layout.
      dwrite/layout: Use already resolved or last resort fonts when setting dummy line metrics.
      dwrite/layout: Constify some internal helpers arguments.
      dwrite/layout: Limit text window passed to MapCharacters() to the range of characters to map.
      xmllite/reader: Improve xml declaration node parsing.
      xmllite/writer: Implement WriteWhitespace().
      xmllite/writer: Handle empty prefix and uri correctly in WriteStartElement().
      xmllite/writer: Close open tag on WriteRaw().
      xmllite/writer: Close open tag on WriteProcessingInstruction().
      xmllite/writer: Implement WriteAttributes().
      xmllite/writer: Add initial implementation of WriteNode().
      xmllite/tests: Add some more tests for WriteStartElement().
      xmllite/tests: Add a test for IsEmptyElement() on attributes.
      xmllite/writer: Handle empty local name in WriteAttributeString().
      xmllite/writer: Implement WriteNodeShallow().
      xmllite/writer: Enable some more tests for WriteNode().
      kernelbase: Add OpenFileMappingFromApp().
      kernelbase: Add CreateFileMappingFromApp().
      kernelbase: Add MapViewOfFileFromApp().
      include: Add windows.system.threading.idl.
      threadpoolwinrt: Add a stub module.
      threadpoolwinrt: Add initial implementation of RunAsync.
      include: Add windows.security.cryptography.idl.
      cryptowinrt: Add a stub module.
      cryptowinrt: Implement GenerateRandomNumber().

Owen Rudge (2):
      secur32/tests: Add tests for LsaGetLogonSessionData.
      secur32: Implement basic functionality for LsaGetLogonSessionData.

Paul Gofman (6):
      advapi32: Add stub for PerfCloseQueryHandle().
      advapi32: Add stub for PerfOpenQueryHandle().
      advapi32: Add stub for PerfAddCounters().
      advapi32: Add stub for PerfQueryCounterData().
      crypt32: Support CRYPT_STRING_HEXRAW in CryptBinaryToStringA().
      crypt32: Support CRYPT_STRING_HEX in CryptStringToBinary().

Piotr Caban (2):
      msvcp90: Fix indentation in concurrent_vector_alloc_segment function.
      msvcr100: Fix crash when setting scheduler in schedule_task_proc.

Rémi Bernon (66):
      wmvcore/tests: Add some tests starting WM reader with NULL context.
      winegstreamer: Wrap async reader op new_context in a union.
      winegstreamer: Unconditionally assign new context for ASYNC_OP_START.
      winegstreamer: Implement async reader asynchronous seeking.
      winegstreamer: Keep start time in the async_reader struct.
      winegstreamer: Check whether the reader is still running before user time.
      winegstreamer: Factor async_reader waits using async_reader_get_wait_timeout.
      winegstreamer: Introduce a new async_reader_wait_pts helper.
      winegstreamer: Request the wm_reader stream only when necessary.
      widl: Allow parameterized types in runtimeclass interfaces.
      wineandroid.drv: Add missing DM_DISPLAYORIENTATION flag on display mode.
      win32u: Rename get_full_mode variables and avoid using devmode directly.
      win32u: Fill the local full_mode variable instead of using the modes array.
      win32u: Introduce reference counting to struct adapter.
      win32u: Avoid copying the modes array in NtUserChangeDisplaySettings.
      win32u: Avoid unnecessary copy of adapter path and device name.
      win32u: Pass adapter parameter to (read|write)_registry_settings.
      win32u: Introduce a new internal WINE_DM_UNSUPPORTED display flag.
      mf/tests: Split IMFTransform tests to transform.c.
      mf/tests: Add some winetest context to MFT tests.
      mf/tests: Split create_transform into check_(mft|dmo)_(enum|get_info).
      mf/tests: Test AAC encoder MFT presence and media types.
      mf/tests: Test AAC decoder MFT presence and media types.
      mf/tests: Factor IMFTransform required attributes checks together.
      maintainers: Assume maintainership of MF transforms.
      winegstreamer: Support MFT_SET_TYPE_TEST_ONLY flag in the MF transforms.
      winegstreamer: Avoid leaking attributes on video processor creation failure.
      winegstreamer: Better implement H264 MFT GetAttributes and GetOutputStreamAttributes.
      winegstreamer: Set MFT_OUTPUT_DATA_BUFFER_INCOMPLETE in wg_transform_read_mf.
      winegstreamer: Stop setting flags on unexpected MF_E_TRANSFORM_STREAM_CHANGE.
      winegstreamer: Check for unexpected format change in wg_transform_read helpers.
      winegstreamer: Check WMA sample size before wrapping the sample.
      winegstreamer: Remove unnecessary IMFTransform_GetInputStreamInfo calls.
      winegstreamer: Create wg_sample from IMFSample within wg_transform_push_mf.
      winegstreamer: Wake thread when async reader user clock is modified.
      winegstreamer: Introduce a new async_reader_deliver_sample helper.
      winegstreamer: Use a dedicated CS to serialize async reader commands.
      winegstreamer: Check for already opened stream in wm_reader_open*.
      winegstreamer: Get rid of the wm_reader_ops callbacks.
      winegstreamer: Aggregate a IWMSyncReader in the async reader.
      winegstreamer: Merge wm_syncreader.c into wm_reader.c.
      mf/tests: Use separate variables for input / output samples.
      mf/tests: Factor IMFTransform_ProcessOutput checks together.
      mf/tests: Introduce a new load_resource helper.
      mf/tests: Introduce a new dump_mf_sample helper.
      mf/tests: Factor IMFSample checks in a check_mf_sample helper.
      mf/tests: Factor IMFSample attributes checks in check_mf_sample.
      mf/tests: Check all produced output IMFSample at the same time.
      mf/tests: Rename transform frame dumps to BMP.
      mf/tests: Dump image samples with a BMP header and RGB data.
      winegstreamer: Query the IWMSyncReader2 interface in the async reader.
      winegstreamer: Implement IWMSyncReader2_GetReadStreamSamples.
      winegstreamer: Use IWMSyncReader2_GetReadStreamSamples in the async reader.
      winegstreamer: Use IWMSyncReader2_SetReadStreamSamples in the async reader.
      winegstreamer: Use IWMSyncReader2_Close in the async reader.
      winegstreamer: Use IWMSyncReader2_Open in the async reader.
      winegstreamer: Use IWMSyncReader2_OpenStream in the async reader.
      winegstreamer: Use IWMSyncReader2_SetRange in the async reader.
      winegstreamer: Avoid accessing NULL pointer if transform didn't provide a sample.
      user32/tests: Cleanup sysparams WM_DISPLAYCHANGE tests.
      win32u: Move enumeration of available modes out of graphics drivers.
      winemac.drv: Stop using the cached_modes_mutex for get_default_bpp.
      win32u: Factor out display_device lookup in separate helpers.
      win32u: Use find_adapter_device_by_(name|id) helpers in find_adapter.
      win32u: Lock display devices mutex in find_adapter.
      win32u: Broadcast WM_DISPLAYCHANGE message on display settings change.

Santino Mazza (2):
      include: Define REG_APP_HIVE and REG_PROCESS_PRIVATE.
      ntdll/tests: Test for NtRegLoadKey roothandle parameter.

Shaun Ren (1):
      msvcrt: Fix strncmp return value.

Witold Baryluk (4):
      ntdll: Speed up NtQueryVirtualMemory(MemoryWorkingSetExInformation) by conditional page check.
      ntdll: Do not use hardcoded page shift in NtQueryVirtualMemory(MemoryWorkingSetExInformation).
      ntdll: Use pread in NtQueryVirtualMemory(MemoryWorkingSetExInformation).
      ntdll: Keep pagemap file open after first use of NtQueryVirtualMemory(MemoryWorkingSetExInformation).

Zebediah Figura (16):
      wined3d: Do not create larger staging buffers than necessary in adapter_vk_copy_bo_address().
      wined3d: Remove a redundant variable.
      wined3d: Factor out wined3d_texture_validate_sub_resource_idx().
      wined3d: Mark managed textures as dirty if applicable in wined3d_device_evict_managed_resources().
      d3d8: Remove an incorrect comment.
      wined3d: Add a dirty region to the destination texture in wined3d_device_context_blt() if applicable.
      wined3d: Pass a draw count of 1 to Vulkan indirect draw commands.
      ntdll: Avoid comparing the result of pointer arithmetic to zero.
      libwine: Avoid comparing the result of pointer arithmetic to zero.
      ntdll: Calculate the necessary length after calling snprintf() in SystemWineVersionInformation.
      win32u: Copy directly into the union pointer in unpack_message().
      ntdll: Do not check for malloc() failure in get_initial_environment.
      ntdll: Add a fast path for NtDeviceIoControlFile(INVALID_HANDLE_VALUE).
      d3d10core/tests: Use a pixel shader that consumes SV_Position in test_pipeline_statistics_query().
      d3d11/tests: Use a pixel shader that consumes SV_Position in test_pipeline_statistics_query().
      d3d10core/tests: Ignore random WARP failures in test_pipeline_statistics_query.

Zhiyi Zhang (1):
      kernelbase: Return system error codes in the ReadDirectoryChangesW() completion callback.