The Wine development release 1.7.46 is now available.

What's new in this release (see below for details):
  - Improvements in the BITS file transfer service.
  - Still more progress on DirectWrite implementation.
  - Support for shared user data on 64-bit.
  - Various C++ runtime improvements.
  - Some more support for the 64-bit ARM platform.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.46.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.46.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.46 (total 67):

   6316  MYOB V13 prints a blank page
  15564  BlogJet: typing text and account signup don't work
  16196  Back and Forward buttons in Google Sketchup's 3D Warehouse do nothing
  16885  Yahoo Messenger 8/9 menu invisible, 'X' box hotspot in wrong place
  19648  Lotus Organizer 97 - No text on tabs
  19695  Gox Box window loses focus when list box is expanded
  20927  MYOB version 6 crashes when printing
  22085  Roller Coaster Tycoon can't change the screen resolution
  23148  Lotus Freelance Graphics 2.1 reports a C runtime error and exits
  24823  Miranda IM crashes with a modern contact list plugin
  26656  Cherry-SMS desktop app crashes / shows no country code
  26791  backtraces broken on gcc 4.7
  28148  Neuro Hunter: certain effects are invisible
  28189  regsvr32: No usage in wineconsole
  29929  Demo installer stuck at program folder selection
  30805  Graphical glitch in the menu of Medieval total war
  30873  BMFont crashes on visualise option or save bitmap font as
  31228  "A simple IOCP Server/Client Class" locks up in GetMessage
  31694  A ton of 'error loading char 255 - bad news!' errors when compiling wine with newer Freetype
  31757  Adobe Application Manager 6.x/7.x download fails with error code A12E5 (winhttp request headers missing byte range)
  32127  Oblivion Launcher crash on start
  32214  Shaiya Online (MMORPG, Aeria Games) crashes on startup
  32550  Points2Grid crashes on calculation
  33831  AliWangwang hangs before login
  33849  Multiple 64-bit kernel drivers crash on access to KI_USER_SHARED_DATA range (0xfffff78000000000) (Tages DRM, Comodo Backup)
  34112  Skilors Grooveshark Downloader installer crashes
  34357  TaxAct 2012 and 2013 crash on startup
  34406  Finale Notepad 2012 doesn't copy/create user files on program start
  34843  Garmin BaseCamp 4.1.2 fails due to unimplemented gdiplus.GdipCreateRegionRgnData
  35537  Easy Bridge version 4.0.2 installer crashes
  35540  Netgear Powerline 3.1: desktop shortcut blank
  35775  Multiple Realarcade installers crash on startup due to IFile::PutAttributes method stub
  35949  Starcraft Campaign Editor does not highlight links in triggers on hover
  36192  valgrind shows a definite leak in mmdevapi/tests/capture.c
  36235  valgrind shows 3 leaks in amstream/tests/amstream.c
  36318  valgrind shows a leak in quartz/tests/filtermapper.c
  36321  valgrind shows a possible leak in quartz/tests/referenceclock.c
  36324  valgrind shows a leak in rpcrt4/tests/ndr_marshall.c
  36555  valgrind shows a definite leak in amstream/tests/amstream.c
  36780  Tomb Raider III (steam) crashes
  36916  Command and Conquer Tiberium Wars Demo reports 'Please make sure you have DirectX 9.0 or higher installed.'
  36953  Galactic Civilizations II: stars not rendered
  37303  Change of paper size in print dialog do not update DEVMODE dmFormName member
  37307  Urban Assault black screen when using software renderer (incorrect device enumeration order)
  37403  Regedit: Wrong default registry key is selected
  37502  Naturosoft Pro fails on startup with 'Run-time error 445: Object doesn't support this action' (needs richedit:ITextRange_fnExpand method implementation)
  37767  IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests
  38114  Steam client doesn't allow to install games in different locations (needs kernel32.GetVolumePathName implementation)
  38364  AutoPatcher Updater 1.4.x needs IFileSystem3::GetSpecialFolder()
  38411  3DMark05 v1.30 crashes during system info scan (needs support for 'Win32_Process' WMI class 'WorkingSetSize' property)
  38470  __chkstk not implemented on ARM
  38517  Winhttprequest doesn't keep user logged in
  38525  Winhttprequest follows redirects to wrong url
  38624  jre-8u45-windows-i586.exe installer exits silently (needs advapi32.dll GetWindowsAccountDomainSid stub)
  38638  Bad text encoding output in regsvr32 console output
  38645  QQ 6.x crashes after open the qqzone tab (webkit crash)
  38691  Dia Portable 0.97 crashes on startup in libcairo-2
  38695  valgrind shows uninitialized memory in dlls/gdi32/freetype.c:WineEngInit() (win64)
  38713  Link failure due to use of libunwind in ntdll
  38719  64-bit ARM Windows applications from Windows SDK for Windows 10 crash when accessing TEB/PEB members (AArch64 platform specific register X18 must be reserved for TEB)
  38739  valgrind shows a possible leak in ole32/tests/usrmarshal.c
  38747  msvcrt.dll does not implement _getwch, _getwche, and _ungetwch
  38752  Foobar2000 UPnP/DLNA media server hangs on exit
  38758  SlingPlayer 1.x installers fail
  38764  Improper device request/IRP handling causes heap corruption in wineserver
  38769  Additional AES algorithms in schannel break wine build
  38783  64bit msys32 crashes on unimplemented RtlCopyMemory

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

Changes since 1.7.45:

Akihiro Sagawa (1):
      winetest: Add SystemPreferredUILanguages to the log.

Alex Henrie (2):
      riched20: Fix link notification conditions and add tests.
      user32: Send BM_SETCHECK before WM_CAPTURECHANGED and add tests.

Alexandre Julliard (1):
      d3dcompiler_43: Add a helper function for register token to avoid compiler warnings.

Alistair Leslie-Hughes (8):
      scrrun: Implement ITextStream Close.
      d3dcompiler_46: Add stub dll.
      d3dcompiler_47: Add stub dll.
      dpnet: Correct adding components in Duplicate.
      d3dcompiler: Share the source with d3dcompiler_46.
      d3dcompiler: Rename d3dcompiler_43_main.c to main.c.
      d3dcompiler: Share the source with d3dcompiler_47.
      dpnet: Don't return partially initialized object.

Andrew Eikum (4):
      xaudio2_7: Move object creation to avoid forward declaration.
      xaudio2_7: Simplify object creation.
      xaudio2_7: Wrap long lines.
      include: Upgrade interface definitions to XAudio2 2.8.

André Hentschel (7):
      include: Rename 64-bit PState to 32-bit Cpsr on ARM64.
      ntdll: Implement RtlCaptureContext on ARM64.
      ntdll: Fix CONTEXT_ARM in RtlCaptureContext.
      winebuild: Create stubs for ARM64.
      ntdll: Set platform register x18 to TEB on ARM64.
      ntdll: Set TPIDRURW inline on ARM.
      include: Add IMAGE_LOAD_CONFIG_DIRECTORY64 definition.

Aric Stewart (4):
      include: Add ddk/hidclass.h.
      include: Add ddk/hidpi.h.
      hid: Break HidD functions out into their own module.
      hid: Translate HidD_ functions to their IOCTLs.

Bernhard Übelacker (2):
      comctl32/tests: Free memory used by property sheet page (Valgrind).
      advapi32: Fix RegEnumValueW when enumerating long values.

Bruno Jesus (6):
      dmband: Don't fake success on IDirectMusicUtils_IPersistStream_ParseReference.
      dmime: Don't fake success on IDirectMusicUtils_IPersistStream_ParseReference.
      ws2_32/tests: Add UDP select() test for unbound socket.
      ws2_32: Trace accepted socket.
      ws2_32: Add a helper to get socket type.
      ws2_32: UDP sockets can write data even when unbound.

Daniel Lehman (1):
      msvcp90: Set _Locimp vtable in _Locimp ctors (Valgrind).

Dmitry Timoshkov (1):
      gdiplus: Implement GdipCreateRegionRgnData.

Erich Hoover (7):
      ntdll: Fix IOCTL_DVD_READ_STRUCTURE expected output size.
      kernel32: Implement GetVolumePathName.
      kernel32/tests: Convert GetVolumePathName tests into a list.
      kernel32/tests: Add a bunch more GetVolumePathName tests.
      kernel32: Handle semi-DOS paths in GetVolumePathName.
      kernel32: Handle bogus DOS paths in GetVolumePathName.
      kernel32: Handle device paths in GetVolumePathName.

Gerald Pfeifer (2):
      winedbg: Avoid "uninitialized variable" compiler warning in types_extract_as_longlong.
      oleaut32: Fix indentation in test_safearray.

Hans Leidekker (24):
      qmgr: Use winhttp for HTTP transfers instead of wininet.
      qmgr: Add a stub implementation of IBackgroundCopyJobHttpOptions.
      qmgr: Implement IBackgroundCopyJobHttpOptions::SetSecurityFlags and IBackgroundCopyJobHttpOptions::GetSecurityFlags.
      qmgr: Implement IBackgroundCopyJobHttpOptions::SetCustomHeaders and IBackgroundCopyJobHttpOptions::GetCustomHeaders.
      qmgr: Implement IBackgroundCopyJob::SetCredentials and IBackgroundCopyJob::RemoveCredentials.
      qmgr: Implement IBackgroundCopyJob::Cancel.
      qmgr: Don't inline transitionJobState.
      qmgr/tests: Add tests.
      winhttp: Store credentials set with WinHttpSetCredentials separately from username and password set through options.
      winhttp: Improve parsing of cookie values.
      winhttp: Correctly handle relative redirect paths.
      winhttp: Keep the session open in the request object.
      advapi32/tests: Add tests to show that reading the SACL requires a special privilege.
      winhttp/tests: Fix a test failure on win2k.
      winhttp: Fix handling of the headers length parameter in WinHttpAddRequestHeaders and WinHttpSendRequest.
      msi/tests: Fix test failures on win2k3.
      msi: Open database cabinet streams through the streams implementation.
      wbemprox: Fix some memory leaks (Coverity).
      wbemprox: Implement Win32_OperatingSystem.Primary.
      wbemprox: Implement Win32_Process.WorkingSetSize.
      winhttp: Fix a couple of corner cases in header processing.
      winhttp: Coalesce cookie headers.
      winhttp: Perform a case sensitive match on cookie names.
      winhttp: Store cookies in reverse order.

Henri Verbeet (10):
      wined3d: Use surface_get_rect() in wined3d_surface_update_overlay().
      wined3d: Implement SM4 discard in the GLSL shader backend.
      d2d1: Fix the ID2D1Factory::CreatePathGeometry() declaration.
      d2d1: Implement d2d_factory_CreatePathGeometry().
      d2d1: Implement d2d_path_geometry_Open().
      d2d1: Implement d2d_geometry_sink_AddLine().
      d2d1: Implement d2d_geometry_sink_AddQuadraticBezier().
      d2d1: Implement d2d_geometry_sink_AddBezier().
      d2d1: Implement d2d_text_renderer_DrawGlyphRun().
      d3d10core: Translate d3d10 usage to wined3d usage for buffers.

Hugh McMaster (7):
      regsvr32: Move /i command line code to a separate function.
      regsvr32: Convert if-else block to switch statement.
      net: WriteFile should output the number of bytes in the char array, not the length of the WCHAR array.
      regsvr32: Convert codebase to Unicode.
      regsvr32: Add WriteFile fallback if WriteConsole fails.
      regsvr32: Make Dll* exports WINAPI.
      regsvr32: Clean up and update comments to reflect changes to the codebase.

Huw D. M. Davies (7):
      oleaut32/tests: Add broken behaviour on Win 2003.
      user32/tests: Add some optional messages for Win XP.
      user32/tests: Try to fix the test failures on Win 2k.
      gdi32/tests: Fix Courier test on Arabic locales.
      gdi32/tests: Japanese Win 7 uses MS Shell Dlg as its default GUI font.
      Revert "advapi32: Fix RegEnumValueW when enumerating long values.".
      shell32/tests: Don't leave behind open explorer windows.

Iván Matellanes (9):
      msvcirt: Add implementation of streambuf::sgetc.
      msvcirt: Add implementation of streambuf::sputc.
      msvcirt: Print error messages in unimplemented functions.
      msvcirt: Add implementation of streambuf::xsgetn.
      msvcirt: Add implementation of streambuf::xsputn.
      msvcirt: Add implementation of streambuf::sgetn/sputn.
      msvcirt: Add implementation of streambuf::snextc.
      msvcirt: Add implementation of streambuf::sbumpc.
      msvcirt: Add implementation of streambuf::stossc.

Jacek Caban (18):
      scrrun: Added IFile::put_Attributes imeplementation.
      wininet: Get rid of no longer needed read_chunked field.
      wininet: Don't pass BLOCKING_WAITALL to NETCON_recv in netconn_read.
      secur32: Added support for a few more algorithms in schannel_get_cipher_algid.
      secur32: Use gnutls_cipher_get_block_size to get cupher block size.
      secur32: Fixed compilation on with gnutls.
      secur32: Fixed compilation on very old gnutls versions.
      mshtml: Use test.winehq.org over http in img_onload tests.
      wininet: Get rid of unneeded MSG_WAITALL support in NETCON_recv.
      wininet: Don't use blocking_mode_t in netconn.c.
      mshtml: Added IHTMLXMLHttpRequest::onreadystatechange property implementation.
      wininet: Call set_socket_blocking always and only when needed.
      wininet: Cache blocking state in netconn_t.
      urlmon/tests: Skip https tests on platforms that don't support them.
      msscript.ocx: Added stub DLL.
      msscript.ocx: Added typelib.
      msscript.ocx: Added DLL registration implementation.
      msscript.ocx: Added ScriptControl class factory.

Jared Smudde (1):
      winhlp32: Move Always on top to Options.

Ken Thomases (12):
      configure: Only check for libunwind.h on OS X.
      dbghelp: Fix STABS support for 64-bit on OS X.
      dbghelp: Eliminate an unnecessary parameter from macho_load_debug_info().
      dbghelp: Fix a leak of the Mach-O module structure by adding a module_remove callback.
      dbghelp: Enable enumerating and loading 64-bit Mach-O modules.
      dbghelp: Remove the unused arch_size field of struct macho_file_map.
      dbghelp: Use existing IMAGE_NO_MAP constant instead of redundant MACHO_NO_MAP.
      dbghelp: Move the macho_file_map structure into image_file_map.
      dbghelp: For Mach-O, keep the module file mapped for as long as the module is tracked.
      dbghelp: Implement the image_private.h functions for Mach-O modules.
      dbghelp: Add partial support for version 3 of DWARF CIEs which are generated by Clang/LLVM.
      dbghelp: Parse the DWARF information in Mach-O modules.

Marcus Meissner (3):
      shlwapi: Add missing braces (Coverity).
      oledb32: Free memory on error exit (Coverity).
      kernel32: GetCurrentDirectoryW gets characters, not bytes.

Matteo Bruni (9):
      wined3d: Handle per-vertex point size in the GLSL FFP replacement.
      wined3d: Cleanup and simplify texture sampling code generation.
      wined3d: Drop WINED3D_RS_TEXTUREPERSPECTIVE handling.
      wined3d: Make use of the EXT_BLEND_SUBTRACT flag.
      d3dcompiler: Handle redefining an intrinsic function as a user-defined function.
      d3dcompiler: Handle writemask in make_assignment().
      d3dcompiler: Parse ": register()" syntax.
      wined3d: Drop unused gl_info parameter from shader_glsl_ffp_vertex_lighting().
      wined3d: Don't flag WINED3D_SHADER_CONST_FFP_PROJ on transformed <-> untransformed vdecl change.

Michael Müller (7):
      wininet: Use random names when caching very long urls.
      advapi32/tests: Add tests for GetWindowsAccountDomainSid.
      advapi32: Add initial implementation for GetWindowsAccountDomainSid.
      fltlib: Add stub for FilterLoad.
      wininet/tests: Add tests for overriding host header.
      rpcrt4: Fix arguments of HttpAddRequestHeaders.
      wininet: Fix arguments of HttpAddRequestHeaders.

Michael Stefaniuc (25):
      dmband: Pass the object instead of the iface to helpers.
      dmband: Use the generic DirectMusicObject implementation for DMBand.
      dmband/tests: Add IPersistStream tests for DMBandTrack.
      dmcompos/tests: Add IPersistStream tests for DM*Track.
      dmime: Pass objects instead of ifaces to helpers.
      dmime: Remove unused arguments from helper functions.
      dmime: Use the generic DirectMusicObject implementation for DMSegment.
      dmime: Use the generic DMObject implementation for DMAudioPathConfig.
      dmime: Get rid of the extra pointer to a DMUS_OBJECTDESC.
      dmime: Use the generic DMObject implementation for DMGraph.
      dmime/tests: Add IPersistStream tests for DM*Track.
      dmstyle/tests: Add IPersistStream tests for DM*Track.
      dmband: IsParamSupported method doesn't crashes on NULL.
      dmband: Implement the E_NOTIMPL methods of IDirectMusicTrack8.
      dmband/tests: Add some basic IDirectMusicTrack8 tests.
      dmcompos: IsParamSupported of DMChordMapTrack doesn't crashes on NULL.
      dmcompos: Implement the E_NOTIMPL methods of IDirectMusicTrack8.
      dmcompos/tests: Add some basic IDirectMusicTrack8 tests.
      dmcompos: Move struct definitions to the files that need them.
      dmime: Move struct definitions to the files that need them.
      dmband: Pass objects instead of ifaces to helpers.
      dmband: COM cleanup for IDirectMusicTrack8.
      dmband: Remove the extraneous IUnknown from DMBandTrack.
      dmband: Use the generic IPersistStream implementation from dmobject.
      dmstyle: IsParamSupported method doesn't crashes on NULL.

Mohamed Mediouni (1):
      ntdll: Multiply r4 with the word size in ARM for __chkstk.

Nikolay Sivov (50):
      regedit: Make it possible for save/restore position on tree root.
      msxml3: Handle SafeArrayAccessData() failure in load() (Coverity).
      dwrite/tests: Test to show that GetCurrentTransform/GetPixelsPerDip are not really used from Draw().
      dwrite: Fix splitted range length, initial test for GetMetrics().
      dwrite: Check format directions in CreateEllipsisTrimmingSign().
      dwrite: Initial implementation of Draw() for trimming sign.
      dwrite: Call GetCount() once when looking for family name.
      dwrite: Fix the way drawing effects are reported for inline objects.
      ole32: Marshal HDC as remotable handle.
      ole32: Marshal HICON as remotable handle.
      dwrite: Validate format property values.
      ole32: Marshal HBRUSH as remotable handle.
      oleaut32/tests: Test that user memory functions are not called.
      riched20: Improve tracing for unimplemented range methods.
      riched20: Implement Expand for tomStory case.
      riched20/tests: Some more EM_SETSEL tests.
      riched20/tests: Remove explicit todo flag values from static test data.
      ole32: Fix a typo in argument name.
      dwrite/tests: Initial test for GetLineMetrics().
      dwrite/tests: Initial test for GetBaseline().
      riched20: Improve tracing for unimplemented selection methods.
      comctl32/monthcal: Fix title to use properly localized year/month format.
      dwrite: Set cluster length together with other metrics.
      dwrite: Actually set isWhitespace for space clusters.
      dwrite: Count last cluster length too when building a line.
      kernel32: Export RtlCopyMemory().
      ole32/tests: Fix source buffer leak (Valgrind).
      amstream: Get rid of some casts by using proper iface types.
      amstream/tests: Get rid of global stream pointer that we don't really need.
      amstream: Release pins and streams array on instance release (Valgrind).
      gdi32/freetype: Properly handle loading of FT_Long-sized types (Valgrind).
      ieframe/tests: Fix some leaks (Valgrind).
      oleaut32/tests: Fix stub buffer leak (Valgrind).
      dwrite: Forward GetRecommendedRenderingMode() to newer method.
      dwrite: Store character spacing layout settings.
      quartz/tests: Get rid of some casts.
      dwrite: Set line baseline/height from font metrics.
      dwrite/tests: Show that line baseline is relative to this line.
      dwrite: Set baseline origin Y for reported runs.
      dwrite: Call SetFillMode() once per run.
      amstream: Implement IDirectDrawStreamSample_GetSurface().
      amstream: Keep stream reference when creating sample.
      amstream: Implement GetDirectDraw().
      amstream: Forward IUnknown methods to IAMMediaStream for streams.
      qmgr: Simplify string duplication using a helper.
      qmgr: Simplify GetProgress() with a structure copy.
      amstream: Create a surface if it wasn't provided in CreateSample().
      dmsynth: Cleanup IDirectMusicSynth8 creation helper.
      dwrite: Properly reduce glyph count of effective run.
      dwrite: Fix clustermap shifting for effective run.

Olivier F. R. Dierick (1):
      kernel32: Implement SetFileCompletionNotificationModes as a stub.

Piotr Caban (15):
      msvcrt: Open console input handle with write permission so SetConsoleMode can work on it.
      msvcp60: Sync spec files.
      msvcrt: Write directly to the console in _putwch.
      msvcrt: Fix return value of _cputs.
      msvcrt: Fix return value of cputws.
      msvcrt: Add _getwch implementation.
      msvcrt: Add _getwche implementation.
      msvcrt: Add _ungetwch implementation.
      msvcr120: Add ___lc_locale_name_func implementation.
      msvcp110: Use ___lc_locale_name_func in _Getctype.
      msvcp110: Use ___lc_locale_name_func in _Getdateorder.
      msvcp110: Fix _Collvec structure layout.
      wininet: Improve handling of long URLs in CreateUrlCacheEntry function.
      msvcr110: Add __crtGetLocaleInfoEx implementation.
      msvcrt: Cache locale string to LCID conversion results.

Qian Hong (2):
      include: Remove duplicate macro definition in shellapi.h.
      winemenubuilder: Fix copy and paste error.

Sebastian Lackner (14):
      server: Delay destruction of file object in set_irp_result.
      ntoskrnl: Add initial code to emulate memory access to USER_SHARED_DATA on x86_64.
      ntoskrnl: Add emulation for 'mov Ob, AL' and 'mov Ovqp, rAX' instruction.
      ntoskrnl: Add emulation for 'movzx {Eb,Ew}, Gv' instruction.
      kernel32/tests: Add a lot of picky GetVolumePathName tests.
      kernel32/tests: Add GetVolumePathNameW tests.
      ntoskrnl: Use SIZE_T to store 64-bit offset to USER_SHARED_DATA page.
      advapi32/tests: Explicitly check return value of GetTokenInformation.
      windowscodecs/tests: Fix test condition which is always true.
      windowscodecs: Distinguish interface pointer and implementation pointer.
      qcap: Distinguish interface pointer and implementation pointer for base filter.
      quartz: Distinguish interface pointer and implementation pointer in multiple interfaces.
      ntdll: NtMapViewOfSection should fail if both addr_ptr and zero_bits is set.
      ntdll: Implement support for AT_ROUND_TO_PAGE flag in NtMapViewOfSection.

Thomas Faber (2):
      dimm.idl: Add IActiveIMMMessagePumpOwner.
      msimtf: Add stub implementation for IActiveIMMMessagePumpOwner.

Thomas Faller (2):
      cmd: Fix invalid memory access.
      cmd: Fix invalid "else if" execution.

YongHao Hu (6):
      msvcp110: Add tr2_sys__File_size implementation and test.
      msvcp110: Add tr2_sys__Equivalent implementation and test.
      msvcp110: Add tr2_sys__Current_get implementation and test.
      msvcp110: Add tr2_sys__Current_set implementation and test.
      msvcp110: Add tr2_sys__Make_dir implementation and test.
      msvcp110: Add tr2_sys__Remove_dir implementation and test.

Zhenbo Li (1):
      mshtml/tests: Added IHTMLXMLHttpRequest tests.

--
Alexandre Julliard
julliard@winehq.org
