The Wine development release 1.7.44 is now available.

What's new in this release (see below for details):
  - More support for the COM interfaces of the RichEdit control.
  - Initial version of a SmartTee filter.
  - Some more support for the ARM64 platform.
  - Support for the null device kernel object.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.44.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.44.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

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

You can also get the current source directly from the git
repository. Check http://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 1.7.44 (total 59):

   8272  When exiting Wizardry 8 waits until background music thread finishes playing
   8653  Desperados v1.01 fails to start, reports 'ADPCM sound codec is missing' (Wine's MS-ADPCM needs to report as Pid = 1, Mid = 33)
   9425  Select behavior different on Wine
  11607  Blood 2: The Chosen keyboard repeat problem
  12458  Multiple apps fail due to RichEdit ITextDocument_fnRange stub (MySQL Workbench, BlitzMaxDemo137)
  17920  OleUIAddVerbMenu is not implemented
  18303  Adobe Acrobat Pro 7: Crashes when selecting the "edit" menu while having a file open.
  25684  OLE v2.03 16bit (Win3.1 & 3.11): installer deadlocks
  25950  SEE_MASK_NO_CONSOLE flag in ShellExecuteEx have opposite effect
  26321  Star Wars: Galactic Battlegrounds Clone Campaigns: 1.0x - Exit DataBank or Basic Training will crash game.
  30974  No backtrace with Visual C++ 2010 .pdb files in large app; "Unsupported type 1404 in STRUCT field list"
  31922  64-bit Total Commander 8.x crashes when viewing image files via with 'Imagine' plugin v1.08
  33012  FAST Search for Sharepoint MOSS 2010 Query Tool only displays a black background
  33888  VisualDSP++ 5.0 debugger needs atl80.dll.AtlIPersistPropertyBag_Save
  34262  dbghelp: Unhandled Tag type 0x26 for backtraces in xul.dll
  34517  Burnout Paradise crashes when trying to connect to server (needs support for Win32_SystemEnclosure WMI class)
  34930  Cygwin-compiled Hello World program couldn't display output
  35957  Neverwinter Nights 1.69 crashes on startup since 1.7.16
  36244  valgrind shows several warnings in d3dx9_36/tests/surface.c
  36245  valgrind shows several warnings in d3dx9_36/tests/texture.c
  36246  valgrind shows several warnings in d3dx9_36/tests/xfile.c
  36339  valgrind shows a lot of leaks in ddraw/tests/d3d.c
  36352  valgrind shows a ton of leaks in d3dcompiler_43/tests/hlsl.c
  36379  valgrind shows several possible leaks in light tests in ddraw/tests/d3d.c
  36386  d3dx9_36/tests/texture.c crashes under valgrind on i965/mesa 10.1.1
  36449  Death to Spies: Moment of Truth crashes on mission start (incorrect ID3DXSkinInfo::ConvertToIndexedBlendedMesh stub signature)
  36539  Evernote 5.4 crashes on startup (automatic proxy configuration fails)
  36592  valgrind shows several leaks in wbemprox/tests/query.c
  36659  valgrind shows a definite leak in ddraw/tests/d3d.c:CapsTest()
  36669  ddraw/tests/visual.c crash under valgrind/i965
  37220  valgrind shows an invalid write in d3dx9_36/tests/core.c
  37575  regedit: duplicated null characters
  37604  Adobe Reader 6 crashes at splash screen
  37667  Custom game development library needs GetRawInputDeviceList to set ERROR_INSUFFICIENT_BUFFER on too small buffer
  37759  CLARION 8 crashes on null pointer in GetStringTypeW
  37761  Tree list items do not automatically collapse in Starcraft Campaign Editor
  38090  Managed (.NET) debugger fails to load symbol files ('GetFileVersionInfoSizeExW' is a stub)
  38098  Managed (.NET) debugger fails to load symbol files ('GetFileVersionInfoExW' is a stub)
  38107  Cygwin and MSYS2 needes NULL Device for /dev/zero, /dev/null, /dev/full and so on
  38149  Wrong alignment for D3D structures
  38152  PureBasic IDE crashes when launching online help ("F1" key)
  38170  wine fails to start on raspian/raspberry pi 2 (wine requires a 3G/1G memory split)
  38195  Firefox 36.0.1 crash at pdf.js demo needing msvcr120.dll.copysignf
  38294  select() does not report exception on socket after non-blocking connect() fails
  38313  broken surround sound in skyrim (and possibly games which do not have advanced sound settings)
  38378  msvcr120.dll.fmaxf is needed by Sonkwo
  38389  Samsung Smart View 2.0 locks up/crashes
  38453  valgrind shows an uninitialized variable in programs/vbscript/tests/run.c
  38465  valgrind shows a definite leak in wininet/tests/http.c
  38513  Winuae crashes on unimplemented function GetSystemTimePreciseAsFileTime
  38535  Ukrainian localization problem
  38539  Jade Empire Special Edition has various graphical glitches
  38546  Strong Bad's Cool Game launcher: login window doesn't appear properly
  38562  Ghost Recon Advanced Warfighter 2 hangs with the splash screen
  38586  Green Ranch crashes when opening
  38602  Steam 'steamwebhelper.exe' (CEF) crashes on unimplemented function ADVAPI32.dll.ImpersonateAnonymousToken during clipboard paste into 'search store' field
  38607  GOG Galaxy client needs msvcp110.dll._Call_onceEx
  38628  League of Legends : LoLPatcherUx.exe crash
  38643  Sigil Portable 0.8.6 crashes on unimplemented function msvcr120.dll._dsign

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

Changes since 1.7.43:

Alex Henrie (7):
      winmm: Improve grammar by changing "or" to "and" in an error message.
      comctl32/tests: Extend TVS_SINGLEEXPAND tests.
      comctl32: Close previously selected treeview item at common ancestor.
      comctl32: Do not send WM_NOTIFY if selecting an already-selected item.
      comctl32: Send WM_NOTIFY when expanding ancestors of the new selection.
      riched20: Fix copy-paste error in header documentation.
      winmm: Make mixer UI translatable.

Alexandre Julliard (12):
      ntdll/tests: Use the correct flags for NtOpenFile.
      server: Ignore FILE_DIRECTORY_FILE on special files.
      server: Add an intermediate file object for file handles opened on devices.
      iphlpapi/tests: Avoid sizeof in traces.
      server: Allow a device file to be mapped directly to a Unix device.
      server: Create the null device and its symlink.
      kernel32: Check NT symlink first for all devices in QueryDosDeviceW.
      kernel32: Get rid of the hardcoded NUL device in QueryDosDeviceW.
      ntdll: Add support for file I/O on device files.
      ntdll: Remove the special case for the NUL device.
      user32: Remove some unnecessary clipboard helper functions.
      krnl386.exe: Release the Win16 lock when loading a 32-bit dll.

Andrew Eikum (2):
      winealsa.drv: Default to Stereo instead of 5.1 Surround.
      msacm32: Make ACM driver details match native more closely.

Andrey Gusev (1):
      po: Update Ukrainian translation.

André Hentschel (13):
      dbghelp: Fix typo in trace output.
      kernel32/tests: Add ARM and ARM64 arch strings.
      include: Add more defines related to ARM64.
      ntdll: Use the correct arch value for ARM64.
      wineboot: Add environment registry keys on ARM64.
      wineboot: Add hardware registry keys on ARM64.
      ntdll: Parse ARM64 CPU info.
      ntdll: Add ARMv8 detection for ARM32.
      libport: Fix build on PowerPC.
      include: Add more ARM64 CV constants.
      winedump: Add more image debug types.
      ntdll: Add stub for __chkstk on ARM.
      ntdll: Fix returning from various ARM assembler functions.

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

Austin English (4):
      dbghelp: Ignore some more symbol ids.
      api-ms-win-core-misc-l1-1-0: New dll.
      version: Move GetFileVersionInfoSize(A/W) implemementation to GetFileVersionInfoSizeEx(A/W).
      version: Move GetFileVersionInfo(A/W) implementation to GetFileVersionInfoEx(A/W).

Bruno Jesus (3):
      ws2_32: Simplify select() to make its code more reusable.
      user32/tests: Add tests for GetRawInputDeviceList.
      user32: Set the expected errors in GetRawInputDeviceList.

Christian Faure (1):
      kernel32: Fix a crash in GetStringTypeW() on NULL input string.

Damjan Jovanovic (6):
      qcap/tests: Fix SmartTeeFilter reference leaks from the pins in its test.
      qcap/tests: Add many more SmartTee filter tests.
      qcap/tests: Add media tests for the SmartTee filter.
      qcap/tests: Test SmartTee filter aggregation.
      qcap: Implement a stubbed SmartTee filter.
      qcap: Implement the SmartTee media type functions.

Daniel Lehman (1):
      msvcr120: Add erf functions.

François Gouget (5):
      kernel32/tests: Fix compilation on systems that don't support nameless unions.
      msvcp120/tests: Make call_once(_ex)?_thread() static.
      msvcp90: Make call_once_func_wrapper() static.
      include: Remove an unneeded include directive from msctf.idl.
      include: Add more interfaces to ctfutb.idl.

Frédéric Delanoy (1):
      po: Update French translation.

Grazvydas Ignotas (1):
      kernel32: Don't leak an event handle on errors.

Hans Leidekker (3):
      rpcrt4: Use InternetSetCookie to set the session cookie.
      rpcrt4: Initialize the association UUID in RpcAssoc_Alloc.
      rpcrt4: Remove a couple of unused assignments.

Huw D. M. Davies (11):
      gdi32: Prevent the underline / strikeout width getting rounded to zero.
      comctl32: Don't store the width in the toolbar info structure.
      comctl32: Layout the toolbar after a potential resize.
      comctl32: Wrap the buttons inside the toolbar's client rect.
      comctl32: If necessary add the width of a dropdown arrow while wrapping.
      user32/tests: Fix tests on Windows 8.
      comctl32: Fix a typo in the TB_SAVERESTOREA handler.
      comctl32/tests: Skip the hover tests if the listview's parent is not the foreground window.
      riched20/tests: Fix test on 64-bit.
      dinput/tests: Send a matching key-up event.
      winex11: Fix ctrl-<symbol> to generate codes below 0x20 where necessary.

Indrek Altpere (1):
      winex11: Fix uninitialized memory access appearing in multiple tests (Valgrind).

Iván Matellanes (1):
      msvcirt: Share exceptions implementation with msvcp.

Jacek Caban (8):
      mshtml: Removed unneeded argument from ensure_nsevent_handler.
      urlmon: Correctly handle hash part in file protocol handler.
      mshtml: Use vtbl for binding to event in attach_event.
      mshtml: Get rid of no longer needed detach_event argument.
      mshtml: Use bind_event in set_event_handler.
      ieframe: Allow any VT_ARRAY type as post data.
      kernel32: Fixed buffer overflow in GetShortPathNameW.
      mshtml: Pass EventTarget to call_event_handlers.

Jactry Zeng (1):
      ntdll/tests: Test opening a directory with NULL ObjectName.

Jiaxing Wang (1):
      regedit: Avoid appending '\0' to string value of imported key.

Julian Rüger (1):
      po: Update German translation.

Ken Thomases (5):
      ntdll: Increase name buffer size in read_directory_getattrlist() for UTF-8 encoding.
      ntdll: If read_directory_getattrlist() finds that the file doesn't exist, return successful "no file" result to stop search.
      configure: Add a check for sys/vnode.h.
      ntdll: Fix read_directory_getattrlist() to get the name of a symlink rather than its target, but still detect if the symlink is broken.
      ntdll: Avoid one of the calls to getattrlist() when read_directory_getattrlist() checks the case sensitivity of the file system.

Lauri Kenttä (1):
      po: Update Finnish translation.

Marcus Meissner (2):
      mshtml: Fixed incorrect NULL ptr check (Coverity).
      rpcrt4: Make sure we do not have *data allocated on error (Coverity).

Mark Harmstone (2):
      comctl32: Use DPI settings for checkbox size.
      include: Add GetFileMUIPath to winnls.h.

Martin Storsjo (2):
      kernel32: Implement GetSystemTimePreciseAsFileTime.
      kernel32: Implement a few more classes in GetFileInformationByHandleEx.

Matteo Bruni (14):
      wined3d: Dirtify vertex shader on transformed <-> untransformed transitions.
      wined3d: Fix fragment shaders sampling directly into oC[n] in the ARB backend.
      ntdll: Implement a read_directory_getattrlist() function.
      ntdll: Ignore positive matches in read_directory_stat() for case-insensitive filesystems.
      ntdll/tests: Add a test for filename casing with NtQueryDirectoryFile().
      ddraw/tests: Accept broken testbot result for test_coop_level_d3d_state().
      ddraw/tests: Workaround a testbot failure in test_ck_rgba().
      ddraw/tests: Accept broken testbot result for ddraw1:test_texturemapblend().
      wined3d: Add missing entries for Nvidia GPUs.
      wined3d: Make use of more specific device IDs with Nvidia binary drivers.
      wined3d: Remove point size scaling hack.
      wined3d: Introduce a get_pointsize_minmax() function.
      wined3d: Introduce a get_pointsize() function.
      wined3d: Avoid the builtin uniforms for point size when using the fixed function vertex pipeline.

Michael Müller (3):
      wininet: Fix memory leak by not calling get_cookie_header twice.
      kernel32: Return correct device type for cd devices without medium.
      wbemprox: Add support for Win32_SystemEnclosure.

Nikolay Sivov (58):
      quartz: Implement a trivial case of ConvertTimeFormat().
      riched20: Added ITextFont stub.
      riched20: Added stub ITextPara.
      riched20: Implement SetStart().
      riched20: Implement SetEnd().
      riched20: Added tom typelib.
      oledlg: Make object name menu item localized.
      comctl32: Remove LoadString() fallback when loading from same module.
      po: Update Russian translation.
      riched20: Implement GetBold()/GetItalic().
      dwrite: Added IDWriteGlyphRunAnalysis stub.
      xmllite/writer: Implement WriteEndDocument().
      oleaut32: Added missing IPersistMemory proxy/stub methods.
      riched20: Implement GetSize().
      riched20: Implement GetUnderline().
      riched20: Implement GetForeColor().
      riched20: Implement GetStrikeThrough().
      riched20: Implement GetSubscript()/GetSuperscript().
      riched20: Implement GetLanguageID().
      riched20: Implement GetFont() for selection range.
      msctfp: Added proxy/stub dll for msctf.idl interfaces.
      oledlg: Support convert menu item in OleUIAddVerbMenuW().
      include: Fix oleacc.idl size_is attributes for void** arrays.
      include: Fix missing attributes in urlmon.idl.
      riched20: Implement GetName() for ITextFont.
      riched20/tests: Test against proper LCID.
      riched20/tests: Added tests for ITextFont getters on detached font.
      riched20: Added some tom* constants used with ITextFont::Reset().
      dwrite: Fix splitting by bidi levels.
      po: Update Russian translation.
      dxdiagn: Silence some fixmes from class factory QI.
      dwrite: Fix breakpoint update logic.
      riched20: Added IDispatch support.
      riched20: Implement Start/End properties for ranges.
      riched20/tests: Some tests for GetText().
      riched20/tests: Basic test for Delete().
      riched20/tests: Initial tests for font duplication behavior.
      setupapi/tests: Skip a test if user is not allowed to open logging.
      riched20: Support ITextFont instances detached from a range.
      riched20: Implement tomTrackParms/tomCacheParms.
      riched20: Initial support for changing font properties.
      riched20: Support setting boolean font properties.
      riched20: Implement font property setters.
      riched20: Implement SetName().
      riched20: Implement SetText for regular range.
      riched20: Implement SetText() for selection range.
      dwrite/tests: Some tests for control characters handling.
      riched20: Implement GetPara() for selection range.
      riched20: Implement InRange().
      riched20: Implement IsEqual() for ranges.
      riched20: Implement Select().
      riched20: A bit more tests for GetChar(), improve tracing.
      dwrite: Implement GetGlyphOrientationTransform().
      riched20: Convert from twips to points when tomUsePoints is used.
      riched20: Switch font unit is not allowed.
      riched20: Added GetStoryType().
      riched20: Implement SetFont().
      riched20/tests: Test more return values and released cases.

Piotr Caban (7):
      msvcrt: Fix functions table reallocation in _onexit.
      msvcp120: Added _Call_once implementation.
      msvcp120: Add _Do_call implementation.
      msvcr120: Add copysign export.
      msvcr120: Add fmax implementation.
      msvcr120: Add _dsign implementation.
      wininet/tests: Test if content is read from cache in INTERNET_FLAG_FROM_CACHE tests.

Qian Hong (1):
      atl: Added stub AtlIPersistPropertyBag_Save.

Sebastian Lackner (10):
      ntdll/tests: Add tests for accessing \\Device\\Null.
      server: attach_thread_input shouldn't create queues for foreign threads.
      dinput: Reset device state in SysKeyboard*Impl_Acquire.
      kernel32/tests: Add tests for delete behaviour of CopyFileEx.
      wineconsole: Allocate fake hwnds for curses backend.
      ntdll: Add stub for NtImpersonateAnonymousToken.
      advapi32: Forward ImpersonateAnonymousToken to ntdll.
      ole32/tests: Add additional tests for CoWaitForMultipleHandles and WM_QUIT.
      wbemprox/tests: Add tests for Win32_SystemEnclosure.
      wbemprox: Fix handling of arrays as query results.

Stefan Dösinger (4):
      d3d9/tests: Avoid invalid framebuffer configrations in resz_test.
      wined3d: Don't allow 3D depth textures.
      wined3d: Check resource types separately in check_fbo_compat.
      wined3d: Allow specifying a different depth stencil location.

Thomas Faber (3):
      advapi32: Use STATUS_BUFFER_TOO_SMALL for buffer overflows in RegQueryInfoKeyW.
      advapi32: Do not fail in RegQueryInfoKey if *class_len is 0.
      advapi32: Write back partial results in RegQueryInfoKeyA.

Thomas Faller (1):
      vbscript: Fix for unchecked memory access.

--
Alexandre Julliard
julliard@winehq.org
