The Wine development release 1.7.45 is now available.

What's new in this release (see below for details):
  - Better debugging support on 64-bit Mac OS X.
  - Some more progress on DirectWrite implementation.
  - A number of RichEdit control fixes.
  - Beginning implementation of the old MSVCIRT C++ runtime.
  - Various bug fixes.

The source is available from the following locations:

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

   2805  Utopia angel does not start (clipboard error)
   4463  dogwaffle exits during initalization with a visual basic error
   7425  Gothic 2 crashes without native directmusic
   9473  Adobe Reader 6 / Adobe Acrobat Pro 6: Zoomfactor and Pagenumber are empty (riched20.dll)
  11176  Adobe Reader 6 / Adobe Acrobat Pro 6: Searching not possible (riched20.dll)
  11849  Adobe Acrobat Pro 6 & 7 / Adobe Reader 6 & 7 -- Updates fail
  12451  Adobe Acrobat / Reader opens the wrong URL
  14896  GTA: San Andreas - Ambient Sounds are too quiet (EAX)
  18019  Some Bioware games' setup crashes when changing install directory
  19156  Street Fighter 4 Benchmark: Poor framerate
  19813  Voddler client hangs on startup (kernel32.GetSystemTimes is a stub)
  20830  Dameware NTutilities crashes trying yo create AD object
  21042  Outlook Express crashes before sending a message
  21579  Multiple applications crash with builtin RichEdit (text host window/gui control methods must not be called during CreateTextServices)(Yahoo Messenger 10, BSSB-Win, ICQ 6,7,8)
  21708  d3d is trying to use GL_DEPTH_TEXTURE_MODE_ARB when driver doesn't support ARB_depth_texture
  23174  Fallout 3: Diologue and Video/sound issues
  23997  Gridrunner Revolution: doesn't render certain objects in-game
  24033  StarCraft2 bad physics issue on non-flat landscape parts that is unrelated to the physics
  24299  Starcraft 2: Custom maps with dialog labels using style "ABChoiceBackButtonText" crashes game
  26808  Multiple games need XAudio2 '{5a508685-a254-4fba-9b82-9a24b00306af}' XAudio2_7.dll (Blue Toad Murder Files, Crazy Machines, Zafehouse Diaries)
  28768  Multiple GFWL (Games For Windows Live) 1.x games crash on startup (Kane & Lynch: Dead Men)
  29349  Summoner launch screen: corrupted graphics
  31896  Portable Calibre does not add book to library
  32060  Guild Wars: Input gets stuck
  32966  mshtml: crash in get_frame_by_name( "jQuery" ) using jQuery 1.3.2
  33592  Family Tree Builder crashes partway through import of components
  34684  RaidCall 7.2.x crashes when joining a group
  34808  wine iexplore.exe http://peacekeeper.futuremark.com crashes
  34982  Multiple web-installers crash in 'get_frame_by_name' with NULL 'HTMLOuterWindow' (Horizon XBOX tool, MAGIX Video Deluxe MX Plus 18)
  35029  Ancient Gems (myrealgames.com) crashes on startup
  35191  make install shouldn't call update-desktop-database
  36135  valgrind shows some errors in ole32/tests/ole2.c
  36704  wine cmd uses overwrite mode instead of insert mode
  37713  winecfg: Window title isn't updated when removing application from the list
  38384  64-bit InstallShield engine COM server 'ISBEW64.exe' crashes during installation of AT&T Connect iMeeting
  38443  valgrind shows some invalid writes in dpnet/tests/address.c
  38462  valgrind shows an uninitialized variable in dlls/mshtml/tests/activex.c test_exec_script()
  38576  PES2015 won't connect to online services/2 (ConvertInterfaceLuidToGuid is missing)
  38593  valgrind shows uninitialized memory in set_mwm_hints()
  38595  FXCM Trading Station II doesn't install without winetricks vcrun2005
  38654  Multiple games have rendering issues when anti-aliasing enabled (King's Bounty series, GTA: San Andreas, Tomb Raider: Anniversary)
  38658  PerfectWorld's Arc game client:  window contents missing after log-in (needs better support for NtQueryInformationJobObject)
  38664  PJConv crashes after dropping an image file.
  38683  Waldorf Spectre application crashes on start
  38694  Waldorf Spectre crashes when clicking on buttons in the user interface
  38710  Simon the sorcerer 5 hangs when changing settings
  38717  MX Simulator demo doesn't display menu correctly
  38725  valgrind shows an invalid write in ole32/tests/usrmarshal.c
  38733  appcertui helper tool from Windows SDK 8.1 App Certification Kit crashes on unimplemented function api-ms-win-core-processthreads-l1-1-1.dll.OpenProcessToken

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

Changes since 1.7.44:

Akihiro Sagawa (4):
      shell32/tests: Make tests run on win2k again.
      shell32/tests: Add tests for DragQueryFile.
      shell32: Skip buffer allocation when querying drop file numbers.
      mciqtz32: Watch the player thread while waiting a player task.

Alexandre Julliard (14):
      user32: Get rid of the unused parameter in the EmptyClipboard driver entry point.
      user32: Merge the AcquireClipboard and EmptyClipboard driver entry points.
      user32/tests: Remove support for Win9x in clipboard test.
      server: Use a standard timestamp for the clipboard.
      server: Use separate helper functions for setting and resetting clipboard windows.
      server: Store the clipboard windows as full handles.
      server: Allow opening the clipboard again with the same owner.
      server: Check for the current owner window on the server side for releases.
      user32/tests: Add tests for clipboard sequence number and notifications.
      user32: Disallow format 0 in SetClipboardData.
      user32/tests: Add tests for calling EmptyClipboard from a different thread.
      server: Add a request to empty the clipboard.
      kernel32: Avoid resolving imports against the advapi32 forwards.
      user32/tests: Add tests for SetClipboardData from a different thread.

Alistair Leslie-Hughes (3):
      oledb32: Fix memory leak.
      odbccp32: Add a trace message to functions.
      dpnet: Implement IDirectPlay8Address GetComponentByIndex.

Austin English (1):
      api-ms-win-core-processthreads-l1-1-1: Add advapi32 forwards.

Bruno Jesus (1):
      dmstyle: Don't fake success on IDirectMusicUtils_IPersistStream_ParseReference.

Charles Davis (1):
      server: Get debug registers on 64-bit Mac OS.

Damjan Jovanovic (7):
      qcap: Implement the SmartTee allocator functions.
      qcap: Get the SmartTee filter to a minimally functional level.
      qcap: Add the SmartTee filter automatically as necessary, and test this.
      qcap: Load the default renderer when it's not specified.
      qcap: If we have a single VfwCapture pin, its category should be PIN_CATEGORY_CAPTURE.
      qcap: Add initial audio capture filter.
      qcap: The VfwCapture filter's GetNumberOfCapabilities() should set the capability count to zero.

Daniel Lehman (5):
      msvcrt: Add __swprintf_l.
      msvcp110: Add _Yarn<wchar_t> implementaton.
      msvcrt: Add _W_Getdays.
      msvcrt: Add _W_GetMonths.
      msvcp110: Add wide-char days and months to _LocInfo.

Dmitry Timoshkov (1):
      mshtml: Handle VT_INT/VT_UI4 same way as VT_I4/VT_UINT in IHTMLElementCollection::item.

Erich Hoover (1):
      kernel32: Implement GetSystemTimes.

Guillaume Charifi (2):
      xaudio2_7: Implement IXaudio2 interface as stub.
      xaudio2_7: Add XAudio2 class registration.

Hans Leidekker (5):
      include: Add missing BITS interfaces.
      qmgr: Update to IBackgroundCopyFile2.
      qmgr: Update to IBackgroundCopyJob3.
      qmgr: Add IHttpNegotiate support to the bind status callback.
      qmgr: Implement IBackgroundCopyError.

Huw D. M. Davies (7):
      riched20: Append a final \par when writing the whole buffer.
      mmdevapi/tests: Link against advapi32.
      shlwapi/tests: Fix failing tests on Vista and Win 2008.
      wshom/tests: Use RegQueryValueEx so that the tests run on Win 2k and XP.
      shell32/tests: Fix failing test on Win 2k.
      wininet/tests: Fix tests on Win 2k.
      user32/tests: Use the correct codepage for WM_CHAR tests.

Indrek Altpere (2):
      mshtml: Add NULL check to avoid crashing due to Gecko bug.
      mshtml: Add NULL check to get_frame_by_name.

Iván Matellanes (12):
      msvcirt: Add initial implementation of streambuf.
      msvcirt/tests: Add initial tests for streambuf.
      msvcirt: Add implementation of streambuf::allocate.
      msvcirt: Add implementation of streambuf buffer getters.
      msvcirt: Add implementation of streambuf::unbuffered.
      msvcirt: Add implementation of streambuf locking.
      msvcirt: Add implementation of streambuf::gbump/pbump.
      msvcirt: Add implementation of streambuf::sync.
      msvcirt: Add implementation of streambuf::seekoff/seekpos.
      msvcirt: Add implementation of streambuf::in_avail/out_waiting.
      msvcirt/tests: Add more streambuf tests.
      msvcirt: Fix implementation of streambuf::sync.

Jacek Caban (7):
      jscript: Correctly handle pvarResult in ParseScriptText.
      jscript: Added beginning support for 'automagic' event binding feature.
      jscript: Added 'automagic' test.
      mshtml: Fixed leak in HTMLCurrentStyle_Create.
      kernel32: Treat empty locale name as LOCALE_INVARIANT.
      setupapi: Allow more than one Wine manifest in a DLL.
      gdiplus: Added version 1.1 manifest.

Jerome Leclanche (1):
      makefiles: Do not run update-desktop-database on make install/uninstall.

Joachim Priesner (2):
      comdlg32: File dialog: Append multi-part extensions like .abc.def.
      ieframe: shellbrowser: Strip 'file://' from file URLs in BEFORENAVIGATE2 callbacks.

Ken Thomases (8):
      winemac: Remove extraneous CDECL attribute.
      configure: Warn for a 64-bit build without CFI directive support.
      configure: Add a check for libunwind.h.
      ntdll: Add support for using libunwind to unwind the stack for x86_64.
      ntdll: Add partial support for version 3 of DWARF CIEs which are generated by Clang/LLVM.
      winecoreaudio: Fix build by importing advapi32.
      Revert "ntdll: Avoid one of the calls to getattrlist() when read_directory_getattrlist() checks the case sensitivity of the file system.".
      ntdll: Fix the "not found" status set by read_directory_stat() and read_directory_getattrlist() for when restart_scan is set.

Louis Lenders (1):
      kernel32/tests: Add tests for GetSystemTimes.

Marcus Meissner (1):
      msi: Free rec in error exit (Coverity).

Mark Harmstone (1):
      winecfg: Invalidate property sheet when font changed.

Matteo Bruni (15):
      wined3d: Always enable GL_PROGRAM_POINT_SIZE in the GLSL backend.
      wined3d: Clamp per-vertex point size in vertex shaders.
      wined3d: Handle point sprites with PS 3.0.
      d3d9/tests: Add more tests for point size.
      d3d8/tests: Port the point size test to D3D8.
      wined3d: Introduce a get_fog_start_end() function.
      wined3d: Don't use the builtin FFP uniforms for fog parameters.
      d3d9/tests: Add a test for reordering texture coordinates via D3DTSS_TEXCOORDINDEX.
      d3d8/tests: Add a test for reordering texture coordinates via D3DTSS_TEXCOORDINDEX.
      ddraw/tests: Add a test for reordering texture coordinates via D3DTSS_TEXCOORDINDEX.
      d3d9/tests: Test the default diffuse color for vertex shaders.
      d3d9/tests: Test the default colors for fixed function vertex processing.
      d3d8/tests: Port the vertex shader input test to D3D8.
      d3d8/tests: Port part of the fixed function attributes test to D3D8.
      wined3d: Avoid the builtin GLSL vertex attributes.

Michael Müller (8):
      amstream: Correctly check return values in IAMMultiMediaStreamImpl_Initialize (Coverity).
      kernel32: Correctly check for an empty short filename in GetShortPathNameW (Coverity).
      wbemprox: Treat \r as whitespace.
      winebuild: Set a valid major and minor linker version.
      kernel32: Improve stub for SetFileInformationByHandle.
      kernel32: Forward SetFileInformationByHandle FileDispositionInfo class to ntdll.
      d3d8: Mark one more function as hotpatchable.
      ddraw: Make some functions hotpachable.

Michael Stefaniuc (11):
      dswave: Remove gratuitous IDirectMusicSegment8 from DirectSoundWave.
      dswave/tests: Check for the private interface in DirectSoundWave.
      dswave: COM cleanup for the IUnknown interface of DirectSoundWave.
      dswave: Use the generic DirectMusicObject implementation for DSWave.
      dswave: Get rid of the extra pointer to a DMUS_OBJECTDESC.
      dswave: Finish the cleanup of create_dswave().
      dmstyle: Remove unused arguments from helper functions.
      dmstyle: Pass the object instead of the iface to helper functions.
      dmstyle: Use the generic DirectMusicObject implementation for DMStyle.
      dmcompos: Use the generic DirectMusicObject implementation for DMChordMap.
      dmcompos: Get rid of the extra pointer to a DMUS_OBJECTDESC.

Nikolay Sivov (75):
      oleaut32: Implemented a couple more proxy/stub methods.
      ole32: Implemented some proxy/stubs methods.
      mshtml/tests: Fix use-after-free in events tests.
      dwrite: Forward GetGdiCompatibleGlyphPlacements() to corresponding font methods.
      dwrite: Report inline objects in Draw().
      dwrite: Fix wrong run data reported to a renderer.
      dwrite: Properly report drawing effect in DrawGlyphRun()/DrawInlineObject().
      dwrite: Handle inline object GetMetrics() failure.
      dwrite: Handle GetBreakConditions() failure.
      riched20: Implement GetText() for regular range.
      riched20/tests: Small test for GetClientSite().
      riched20: Move data linking text range to IRichEditOle in separate structure.
      riched20: Properly implement GetClientSite().
      riched20: Create selection instance first time it's requested.
      mmdevapi: Return interface pointers instead of impl pointers.
      ole32: Avoid potential null pointer access (Coverity).
      ole32: Initialize returned value for disconnected case too in proxy_manager_get_remunknown() (Coverity).
      dwrite: Fix potential null pointer dereference in GetInlineObject() (Coverity).
      wined3d: Remove unnecessary test for 0 (Coverity).
      urlmon: Remove unreachable code (Coverity).
      riched20/tests: Don't use global vars for host/textservices.
      riched20: Reduce code duplication in WM_SETTEXT/WM_CREATE handler.
      riched20: Avoid extra host calls during CreateTextServices().
      riched20: Return 0x0 size for NULL objects.
      comctl32/toolbar: Remove always true condition (Coverity).
      d3d8: Fix token type checks in convert_to_wined3d_declaration (Coverity).
      winex11: Remove unreachable XFreePixmap(), mask_pixmap is always NULL on failure (Coverity).
      winebuild: Remove always false condition (Coverity).
      mshtml: Handle allocation failure during collection creation (Coverity).
      oleaut32: Improve error handling in GetRecordInfoFromTypeInfo() (Coverity).
      oledb32: Handle CLSIDFromProgID() failure (Coverity).
      dwrite: Fix potential null pointer access in GetFontCollection() (Coverity).
      wineoss: Properly initialize pollfd structure (Coverity).
      shell32/tests: Fix Verbs instance leak (Valgrind).
      riched20/tests: Fix a BSTR leak (Valgrind).
      ole32: Fix length of buffer allocated by SNB_UserUnmarshal() (Valgrind).
      shell32/tests: Fix one of test failures on win2k.
      shell32/tests: Fix tests failures on win2k.
      ole32/tests: Test if user memory routines are called, remove some useless traces.
      dwrite/tests: Test actual strings being reported to a renderer.
      dwrite: Added a range data header to distinguish range kinds.
      dwrite: Store strikethrough settings in a separate list.
      dwrite: Report strikethrough ranges to renderer.
      dwrite/tests: Some tests for setting per-range layout properties.
      iphlpapi: Added ConvertInterfaceLuidToGuid() stub.
      shlwapi: Fix error handling in IUnknown_GetClassID (Coverity).
      shell32/tests: Fix error code on win2k.
      browseui: Added IEnumString stub for ACListISF.
      browseui: Use method wrappers when forwarding, rearrange functions to match vtable order.
      kernel32: Fail properly for unsupported classes in GetFileInformationByHandleEx.
      gdi32: Return GCP_USEKERNING if font has kerning pairs support.
      crypt32: Fix tracing of out argument (Coverity).
      msctf: Set fActive directly in ActivateLanguageProfile() (Coverity).
      oleaut32: Remove dead switch case VT_I1 entry for VarSub (Coverity).
      gameux: Use matching heap call (Coverity).
      dwrite: Use [0,~0u) as initial text range.
      dwrite: Validate per-range attribute values.
      riched20: Implement GetStoryLength().
      riched20: Implement GetDuplicate() for selection.
      riched20: Handle range method failures in IsEqual (Coverity).
      riched20: Handle range method failures in InRange (Coverity).
      riched20: Improve error handling in SetFont (Coverity).
      wined3d: dst_surface can't be NULL at this point (Coverity).
      usp10: Remove dead null check that can't fail (Coverity).
      oledb32: Fix instance leak on error path (Valgrind).
      oledb32/tests: Added a test for GetDataSource() with created provider and custom properties.
      kernel32/tests: Some tests for invalid classes in SetFileInformationByHandle().
      gdiplus: Added GdipImageSetAbort stub.
      dwrite/tests: A test for case-sensitivity of SetFontFamilyName.
      dwrite: Use [0,~0u) as initial range for strikethrough settings.
      dwrite: Exit earlier when setting property for zero length range.
      dwrite: Fix problems with outline conversion and reporting.
      gdiplus: Implement trivial case of GdipCreateRegionRgnData for empty and infinite regions.
      oledb32: Support provider-specific properties in GetDataSource().
      oledb32/tests: Improve IDataSourceLocator tests a bit.

Piotr Caban (20):
      msvcrt: Use fd critical section in dup2.
      msvcrt: Use fd critical section in msvcrt_free_fd.
      msvcrt: Use fd critical section in read.
      msvcrt: Use fd critical section in _futime64.
      msvcrt: Get rid of msvcrt_fdtoh helper.
      msvcrt: Use fd critical section in msvcrt_create_io_inherit_block.
      msvcrt: Get rid of msvcrt_is_valid_fd helper.
      msvcrt: Use fd critical section in _setmode.
      msvcrt: Don't lock __badioinfo.
      msvcrt: Use fd critical section in _write.
      msvcrt: Fix strtol implementation on strings not containing valid number.
      msvcp90: Fix off by one issue in basic_string::rfind.
      msvcrt: Fix possible deadlock in dup2 function.
      msvcrt: Don't use MSVCRT_fdend in msvcrt_create_io_inherit_block.
      msvcrt: Avoid using global critical section while allocating new file descriptors.
      msvcrt: Remove no longer needed global lock from functions using fd critical sections.
      msvcr: Add _getch_nolock implementation.
      msvcr: Add _putch_nolock implementation.
      msvcr: Add _getche_nolock implementation.
      msvcr: Add _ungetch_nolock implementation.

Qian Hong (5):
      ntdll: Implemenent ObjectTypeInformation class support in NtQueryObject.
      ntdll/tests: Add a few more ObjectTypeInformation tests.
      server: Fix type name of IoCompletion.
      server: Fix type name of File.
      server: Fix type name of directory file.

Sebastian Lackner (9):
      server: Fix opening clipboard from multiple threads.
      ntdll/tests: Don't call lstrlenW on non-null-terminated buffer.
      ws2_32/tests: Add tests for calling select with zero timeout.
      ws2_32: Fix uninitialized memory access in do_poll (Coverity).
      kernel32/tests: Add tests for virtual memory alignment behaviour.
      ntdll: Fix status code when NtMapViewOfSection parameter check fails.
      quartz: Fix handling of periodic advice timers.
      winedbg: Also output system information to the terminal, not only to dialog.
      ntdll/tests: Add tests for info struct size for FileDispositionInformation.

Stefan Dösinger (12):
      wined3d: Read format flags from the volume container.
      wined3d: Read format flags from the surface container.
      wined3d: Set the gl resource type in resource_init.
      wined3d: Keep track of renderbuffer capabilities.
      wined3d: Use renderbuffers if the resource type is RB.
      wined3d: Set WINED3DFMT_FLAG_FBO_ATTACHABLE on depth stencil formats.
      wined3d: Require FBO attachability for render targets and depth stencils.
      wined3d: Don't use depth textures without ARB_depth_texture.
      wined3d: Downgrade the framebuffer attachment FIXMEs to WARNs.
      wined3d: Disable the depth stencil on multisample mismatch.
      d3d9/tests: Test multisample mismatch.
      d3d8: Reject FBs with mismatching multisample settings.

Thomas Faller (2):
      gdi32: Prevent unneeded operations by flag check.
      cmd: Fix access of uninitialized memory.

Vincent Povirk (1):
      ole32: Fix storage locking for read-only exclusive mode.

Zebediah Figura (2):
      include: Add WNODE flags to wmistr.h.
      include: Add event trace flags and guid to evntrace.h.

Zhenbo Li (2):
      mshtml: Implement IHTMLXMLHttpRequestFactory as a stub.
      mshtml: Implement IHTMLXMLHttpRequest as a stub.

--
Alexandre Julliard
julliard@winehq.org
