The Wine development release 1.5.23 is now available.

What's new in this release (see below for details):
  - HTTPS support no longer dependent on OpenSSL.
  - Support for event handling in the Mac driver.
  - A functional Netstat built-in application.
  - A bunch of C++ runtime math functions.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.23.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.23.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.5.23 (total 57):

   7710  QueryPerformanceCounter should be independent of system time
   9952  Sketch Studio shows corrupt cursor
  13417  FlashFXP - No mouse support systemwide if window is open
  16476  Turok crashes when starting a game
  16689  winefile: array size is smaller than minimum required
  17226  SimTower crashes on dereferencing 0xffffffff on attempting to save in SimTower
  17990  Battleships forever video is offset
  19773  Largo Winch: mostly black screen
  19796  Galactic Civilizations II: Crash after menu screen
  19799  Native cscript crashes if you call WScript.Arguments(0).  Breaks Chromium build setup.
  20889  In Quake 3 Arena Main Menu one mouse click is taken as two
  21119  realMYST v1.1.1 [ENGLISH] No-CD/Vista Fixed EXE: Page fault and debug err
  21943  GetCharABCWidthsI does not return correct widths when handling a DC with dc->gdiFont == null
  22812  mt creates corrupted executables
  23121  Iometer 2006.07.27 displays error messages on start (dogfood)
  23215  4x4 Evo 2: Pagefault on second launch of game
  23414  Text is italicized in Mozilla Firefox 3.6.6
  23501  ATEN KVM WinClient did not start
  25010  radmin fast search halfworking.
  25082  radmin: right mouse key drag'n'drop not working
  25222  Football Manager 2011 fails to load with 3d enabled
  25599  Editing Word 2000 drawing object does not work
  26530  Frogger: 3D models not rendering correctly/Only shadows
  27991  LsaLookupNames2 separate allocations break .NET 4.0 System.Security subsystem and leak returned buffer data
  28343  UFO: Extraterrestrials Gold - crash at start unless native d3dx9_26 (or d3dx_36) is used
  28530  Asami Sushi Shop hangs when switching to windowed mode
  28666  Spa Mania: Read from NULL when toggling fullscreen mode
  29822  winebuild should use Clang to assemble if Clang is used to compile
  29936  Java Quick Starter service chews CPU
  30119  ThunderMini crash after a while.
  30514  RonyaSoft Poster Designer (Poster Forge) 2.x installer crashes during installation of fonts due to unimplemented function gdi32.dll.GetFontResourceInfoW
  31280  Right-clicking a listview in a dotnet application doesn't open the context menu
  31343  Steam: Steam is significantly slower in 1.5.x
  32123  Outlook 2010 crashes in versions newer than 1.5.14
  32404  Ocean Dive demo launcher shows garbage when window loses focus
  32504  QQPCDetector.exe from installer of QQMusic 2012 beta2 crashes
  32564  Visual Studio 2010 (10.0) Express Edition needs atl100.dll.AtlAxDialogBoxW
  32706  No sound with foobar2000: Unknown error code (0x80070057)
  32718  Crash on call to SHELL32.dll.709 (SHGetSetFolderCustomSettings)
  32739  TDXW crashes when the window is resized
  32744  Batman: Arkham Asylum Demo "err:wbemprox:wql_error syntax error, unexpected $end, expecting TK_ID"
  32746  TurboTax 2012 installer fails
  32750  Batman: Arkham Asylum Demo wants wbemprox:class_object_GetPropertyQualifierSet
  32763  Regression in wbemprox - rFactor 2 launcher - Unhandled page fault
  32764  STEP7_Lite_V30_incl_SP4 installation crashed
  32776  Crashes in Legacy 5 resulting in its database being corrupted
  32779  RegOpenKeyExA fails on 64bit wine when build with lazarus (fpc 2.6 - 64bit)
  32788  Batman: Arkham Asylum Demo - GetObject gets an empty string
  32799  err:d3d:check_fbo_compat
  32806  Freight Tycoon crashes while loading to the menu (with built-in msvcr71)
  32807  installer of PPTV: needs unimplemented atl100.dll.AtlGetPerUserRegistration
  32812  Hard Truck Apocalypse crashes on start with built-in msvcp71
  32819  Max Payne 1 crashes when loading certain level
  32824  Dota 2 graphics missing without texture copy in check_fbo_compat()
  32840  Mouse input regression caused by changes in GetTickCount64
  32847  Microsoft Expression Design 4 (Free Version) installer needs windowscodecs IcoFrameDecode_GetThumbnail impl
  32853  Microsoft Expression Design 4 (Free Version) installer fails while trying to check for msi.dll file version (MsiGetFileVersion)

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

Changes since 1.5.22:

Alex Henrie (1):
      advapi32: Destination length -1 means no limit.

Alexandre Julliard (20):
      winapi: Add arm64 architecture.
      loader: Hardcode Linux syscall numbers.
      libwine: Hardcode Linux syscall numbers.
      ntdll: Use the __NR_ names for Linux system calls.
      server: Use the __NR_ names for Linux system calls.
      gdi32: Fix copy/paste typo in get_char_positions_indices.
      winex11: Store the client window in the window data again, now that it can be accessed from all threads.
      winex11: Handle Expose events on top-level client windows.
      rpcrt4: Fix wrap-around bug in tick count comparison.
      ole32: Fix wrap-around bug in tick count comparison.
      netapi32: Fix wrap-around bug in tick count comparison.
      wbemprox: Don't rely on GetTicksCount to determine boot time.
      advapi32/tests: Fix another test failure.
      ntdll: Use a monotonic time counter to implement NtQueryPerformanceCounter.
      ntdll: Add support for the monotonic time counter on Mac OS X.
      ntdll: Use the monotonic counter for NtGetTickCount.
      kernel32: Use the monotonic counter in GetTickCount64.
      kernel32: We no longer need the server start time in kernel32.
      urlmon/tests: Avoid infinite timeouts in tests.
      server: Use the monotonic time counter also on the server side.

Andrew Eikum (2):
      ieframe/tests: Don't convert to long path name until the file exists.
      wineoss.drv: Set reasonable defaults if driver reports invalid values.

Andrew Talbot (4):
      gdi32: Avoid signed-unsigned integer comparisons.
      gdiplus: Avoid signed-unsigned integer comparisons.
      hhctrl.ocx: Avoid signed-unsigned integer comparisons.
      gphoto2.ds: Avoid signed-unsigned integer comparisons.

André Hentschel (9):
      include: Fix __int64 definition for ARM64.
      include: Make sure interlocked_cmpxchg128 is defined on ARM64.
      ntdll: Implement IMAGE_REL_BASED_THUMB_MOV32 relocation on ARM.
      netstat: Implement the TCP stats output.
      netstat: Implement the UDP stats output.
      configure: Add ARM64 define.
      dbghelp: Implement rudimentary stack walk for ARM64.
      dbghelp: Remove useless code in ARM stack walk.
      include: Add remaining checks for ARM64.

Aric Stewart (7):
      usp10: Group the GDEF table loading with the other opentype tables.
      usp10: GPOS Mark to Base seeks back in the string to the first glyph that is not a mark for its base.
      usp10: Add locl and ccmp to Latin features.
      usp10: Only fall back to latin features if the base script tag is not found at all.
      usp10: Add ShapeCharGlyphProp_Latin to properly handle zero width character properties for Latin.
      usp10: Add ShapeCharGlyphProp and ContextualShape for Control characters.
      usp10: Do not apply SSA_LINK to right to left text.

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

Austin English (1):
      include: Flesh out d3d11.idl.

Charles Davis (1):
      winebuild: Use Clang to assemble if found.

Christian Costa (4):
      d3dx9_36: Fill children info into ID3DXFileData object.
      dmusic: Add support for loading articulations.
      d3dx9_36: Implement ID3DXFileData_GetChildren and ID3DXFileData_GetChild.
      d3dx9_36: Implement ID3DXFileDataImpl_IsReference.

Detlef Riekenberg (3):
      wininet: Fix a test failure on w2k.
      wininet: Remove most GetLastError tests for IsDomainLegalCookieDomainW.
      wininet: Don't depend on user settings.

Dmitry Timoshkov (4):
      gdiplus: Make GdipCreateFromHDC2 not fail in case of hDevice != NULL.
      dwrite: Avoid triggering an exception on DLL_PROCESS_DETACH.
      gdiplus: Avoid not necessary memory allocation for BITMAPINFO.
      windowscodecs: Implement GetThumbnail in the ICO frame decoder.

Erich Hoover (5):
      advapi32: Fix intermittent 64-bit test failure.
      advapi32: Support service objects in SetSecurityInfo.
      advapi32: Make an internal routine for [Get|Set]SecurityInfo file objects.
      advapi32: Support service objects in GetNamedSecurityInfo.
      advapi32: Support service objects in SetNamedSecurityInfo.

Francois Gouget (4):
      winmm/tests: Allow more margin in the test_asyncWAVE() playback check.
      wined3d: Make device_stream_info_from_declaration() static.
      wined3d: debug_{d3dbasis, d3ddegree}() are not used anymore so remove them.
      Assorted spelling fixes.

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

Gerald Pfeifer (1):
      winex11: Push down variable attrib down in create_gl_drawable.

Hans Leidekker (16):
      msi: Set the OriginalDatabase property after applying transforms, not before.
      msi: Execute concurrent installers in a separate process.
      msi: Remove const from integer parameters.
      wbemprox: Implement Win32_DiskDrive.DeviceId.
      wbemprox: Add a stub implementation of IWbemQualifierSet.
      wbemprox: Check the result count instead of the result pointer in get_propval.
      wbemprox: Implement IWbemQualifierSet::Get.
      wbemprox: Return an empty object if the path is NULL or empty.
      wbemprox: Don't fail if there are less objects than asked for in IEnumWbemClassObject::Next.
      wbemprox: Implement Win32_VideoController.PNPDeviceID.
      wbemprox: Build a PNP device ID that better matches the graphics card.
      msi: Avoid a crash in msi_dialog_handle_event.
      msi: Set _BrowseProperty to INSTALLDIR.
      msi: Don't fail if the directory already exists in MsiCreateAndVerifyInstallerDirectory.
      msi: Fix the return value of MsiGetFileVersion for some corner cases.
      msi: Improve parsing of the supported platforms string.

Henri Verbeet (30):
      ddraw: Avoid LPD3DVERTEXBUFFERDESC.
      ddraw: Avoid LPD3DDRAWPRIMITIVESTRIDEDDATA.
      wined3d: Get rid of the select_shader_mode() call in wined3d_get_device_caps().
      wined3d: Move "ffp_proj_control" to the fragment caps.
      wined3d: Move "vs_clipping" to the shader caps.
      d3drm: Avoid LPD3DRECT.
      d3drm: Avoid LPDDPIXELFORMAT.
      wined3d: Add sRGB writes to the shader backend and fragment pipe caps.
      wined3d: Properly set WINED3DFMT_FLAG_SRGB_WRITE in init_format_texture_info().
      wined3d: Get rid of CheckSrgbReadCapability().
      d3drm: Avoid LPD3DVALUE.
      d3drm: Avoid LPD3DVECTOR.
      wined3d: Get rid of select_shader_mode().
      wined3d: Properly set WINED3DFMT_FLAG_FILTERING in init_format_texture_info().
      wined3d: Get rid of CheckFilterCapability().
      d3drm: Avoid LPD3DRMQUATERNION.
      d3drm: Avoid LPD3DRMRAY.
      wined3d: Properly set WINED3DFMT_FLAG_VTF in init_format_texture_info().
      wined3d: Get rid of CheckPostPixelShaderBlendingCapability().
      wined3d: Get rid of CheckWrapAndMipCapability().
      d3drm: Avoid LPD3DRMBOX.
      d3drm: Avoid LPD3DRMRENDERQUALITY.
      wined3d: Support all fixups in shader_none_color_fixup_supported().
      wined3d: Replace "VertexShaderMode" and "PixelShaderMode" with shader model limits.
      wined3d: Get rid of a superfluous texture copy in check_fbo_compat().
      d3drm: Avoid LPD3DRMIMAGE.
      d3drm: Avoid LPD3DRMMATERIALOVERRIDE.
      wined3d: Introduce a format flag for texturing.
      wined3d: Get rid of CheckTextureCapability().
      wined3d: Get rid of CheckBumpMapCapability().

Huw Davies (12):
      riched20: Avoid an unnecessary string duplication.
      wineps: Use a file mapping to read the ppd file.
      wineps: Cope with '\r'-only end-of-line markers.
      riched20: Simplify adding the undo items when joining paragraphs.
      riched20: Move undo handling to a different set of structs as the display item structs are not a good fit.
      riched20: Add a paragraph ptr to each run.
      riched20: Add a helper to debug the run text.
      riched20: Add a helper to retrieve the run text.
      riched20: Rewrite the run splittable test to take a run parameter.
      riched20: Rewrite the run whitespace test to take a run parameter.
      riched20: Use the get_text helper in a few more places.
      riched20: Add an explicit run length member and use it rather than accessing the string length.

Jacek Caban (41):
      secur32: Return a cert context with context store in SECPKG_ATTR_REMOTE_CERT_CONTEXT GnuTLS implementation.
      secur32: Return a cert context with context store in SECPKG_ATTR_REMOTE_CERT_CONTEXT MacOSX implementation.
      secur32: Added SECPKG_ATTR_REMOTE_CERT_CONTEXT tests.
      mshtml: Get rid of PTInt64 type.
      mshtml: Get rid of PRUint8 type.
      mshtml: Get rid of PRUint16 type.
      mshtml: Get rid of PRUint32 outside XPCOM C API.
      mshtml: Get rid of PRUint64 type.
      winhttp: Test that the data is really read in test_secure_connection.
      winhttp: Enable more OpenSSL-independent code when OpenSSL is not available.
      winhttp: Use schannel in netconn_secure_connect if OpenSSL is not available.
      winhttp: Added schannel-based netconn_recv implementation.
      winhttp: Added schannel-based netconn_send implementation.
      winhttp: Added schannel-based netconn_get_certificate implementation.
      winhttp: Added schannel-based netconn_get_cipher_strength implementation.
      winhttp: Use schannel for HTTPS connection by defaul and get rid of OpenSSL dependency.
      vbscript: Added GetObject implementation.
      vbscript: Added GetObject tests.
      ieframe/tests: Fixed a race in tests.
      d3dcompiler.h: Added D3DCOMPILER_DLL macro.
      atl100: Added AtlGetPerUserRegistration stub implementation.
      wininet: Moved WORKREQUEST allocation to INTERNET_AsyncCall callers.
      wininet: Moved WORKREQ_HTTPSENDREQUESTW out of WORKREQUEST.
      wininet: Moved WORKREQ_INTERNETOPENURLW out of WORKREQUEST.
      wininet: Moved WORKREQ_HTTPREADFILEEX out of WORKREQUEST.
      textstor.idl: Added TS_ATTR_FIND_* constants.
      wininet: Moved WORKREQ_HTTPENDREQUESTW out of WORKREQUEST.
      wininet: Moved WORKREQ_SENDCALLBACK out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPPUTFILEW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPSETCURRENTDIRECTORYW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPCREATEDIRECTORYW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPREMOVEDIRECTORYW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPGETFILEW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPGETCURRENTDIRECTORYW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPFINDFIRSTFILEW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPOPENFILEW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPRENAMEFILEW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPFINDNEXTW out of WORKREQUEST.
      wininet: Moved WORKREQ_FTPDELETEFILEW out of WORKREQUEST.
      wininet: Get rid of WORKREQ* types.
      ieframe: Use int resource ID for toolbar image.

Jörg Höhle (1):
      winealsa: Have the MIDI recorder wait in poll(), not snd_seq_event_input().

Ken Thomases (14):
      winemac: Add a simple ERR() logging macro that can be used from Cocoa code.
      winemac: Add WineEventQueue class for conveying events from Cocoa to Wine threads.
      winemac: Associate an event queue with each thread that creates windows and with each window.
      winemac: Make each Mac driver window track the HWND it's associated with.
      winemac: Implement MsgWaitForMultipleObjectsEx and infrastructure for processing events.
      winemac: Implement a WINDOW_CLOSE_REQUESTED event to allow closing windows.
      winemac: Implement WINDOW_FRAME_CHANGED event to tell Wine when window is moved or resized.
      winemac: Add infrastructure to convert from Cocoa event time to Wine tick count.
      winemac: Implement a MOUSE_BUTTON event for mouse clicks.
      winemac: Take control over when a window can become focused away from Cocoa.
      winemac: Maintain a list of which windows have been "key" (focused) recently.
      winemac: Implement a WINDOW_GOT_FOCUS event for when Cocoa tries to focus a window.
      winemac: Implement a WINDOW_LOST_FOCUS event.
      winemac: Implement an APP_DEACTIVATED event.

Ludger Sprenker (6):
      windowscodecs: Add tests for IPropertyBag2.
      windowscodecs: Implement ComponentFactory::CreateEncoderPropertyBag.
      windowscodecs: Implement IPropertyBag2::CountProperties.
      windowscodecs: Implement IPropertyBag2::GetPropertyInfo.
      windowscodecs: Implement IPropertyBag2::Write.
      windowscodecs: Implement IPropertyBag2::Read.

Maarten Lankhorst (1):
      dbghelp: Add support for zlib compressed debug sections.

Marcus Meissner (3):
      dmusic: Actually return the allocated interface (Coverity).
      msvcrt: read_utf8: free readbuf on return (Coverity).
      kernel32: Conditional variable tests.

Matteo Bruni (1):
      wined3d: Rebind texture before checking for its content in check_fbo_compat().

Michael Stefaniuc (10):
      ws2_32: Use assignment instead of memcpy to copy structs.
      d3dx9_36/tests: Use assignment instead of memcpy to copy a struct.
      dinput: Use assignment instead of memcpy to copy a struct.
      msvcrt/tests: Use assignment instead of memcpy to copy structs.
      mscms: Use assignment instead of memcpy to copy structs.
      crypt32: Use assignment instead of memcpy to copy a struct.
      itss: Use assignment instead of memcpy to copy a struct.
      mscoree: Use assignment instead of memcpy to copy a struct.
      d3dcompiler_43: Use assignment instead of memcpy to copy structs.
      wined3d: Use assignment instead of memcpy to copy structs.

Nikolay Sivov (14):
      advapi32: Make it possible to free data buffer returned from LsaLookupSids().
      advapi32: Fix LsaLookupNames2() regarding referenced domain list allocation.
      xmllite: Add a name stack for elements.
      xmllite: Handle empty elements and transition to content/misc part, update depth on push.
      xmllite: Implement end tag parsing.
      xmllite: Complete content parsing with implemented parts and stubs.
      user32: Accept BI_BITFIELDS format for icons when creating icons.
      xmllite: Handle E_PENDING from stream for comment nodes.
      xmllite: Fail to set input for external IXmlReaderInput.
      comctl32/listview: Implement dragging with right button with a message loop.
      comctl32: Use NM_RCLICK return value to allow default processing.
      comctl32: Test WM_GETDLGCODE return value for TreeView.
      comctl32/listview: Fix item search with keyboard input.
      po: Use a shorter string for button.

Piotr Caban (26):
      vbscript: Fixed typo in vbsregexp55.idl.
      msvcp90: Added complex::real and complex::imag implementation.
      msvcp90: Added std::abs(complex) implementation.
      msvcp90: std::_Fabs(complex) tests.
      msvcp90: Added std::conj(complex) implementation.
      msvcp90: Added complex trigonometric functions implementation.
      msvcp90: Added std::tan(complex) tests.
      msvcp90: Added complex hyperbolic functions implementation.
      msvcp90: Added std::tanh(complex) tests.
      msvcp90: Added std::log(complex) and std::exp(complex) implementation.
      msvcp90: Added std::log10(complex) tests.
      msvcp90: Added std::norm(complex) and std::polar(complex) implementation.
      msvcp90: Added std::pow(complex) and std::sqrt(complex) implementation.
      msvcp90: Added std::sqrt(complex) tests.
      msvcp: Sync implementations.
      msvcrt: Ignore S and R flags in fopen.
      msvcrt: Added N flag support to fopen.
      msvcrt: Fixed setlocale tests on Win8.
      msvcrt: Fixed _Gettnames test on Win8.
      jscript: Fixed a leak in do_regexp_match_next function.
      jscript: Fixed a leak in regexp_match function.
      msvcp71: Fixed basic_filebuf class layout.
      jscript: Update buffer size in do_regexp_match_next.
      msvcrt: Don't call invalid parameter handler in str{n,i}cmp functions.
      msvcrt: Don't make stdout and stderr bufferred when writing to console.
      msvcrt: Use temporary buffers to speed up operations on stdout and stderr.

Putin Evgeny (1):
      cscript: Correct forming cmd for forwarding to wscript.

Rico Schüller (1):
      advapi32: Use the lower 32bit of the special HKEYs on 64bit.

Ričardas Barkauskas (3):
      advapi32: Add AddMandatoryAce stub.
      kernel32: Add SetFileInformationByHandle stub.
      advapi32: Partially implement CreateProcessWithTokenW.

Sergey Guralnik (3):
      user32/tests: Test standard scrollbar initialization.
      user32: Init standard scrollbars during WM_NCCREATE.
      winemenubuilder: Try to wait for creating icon files.

Stefan Dösinger (15):
      wined3d: Ignore clears if count = 0 and rects != NULL.
      ddraw: Implement DrawPrimitiveStrided with regular draws.
      ddraw: Implement DrawIndexedPrimitiveStrided with regular draws.
      d3d: Remove high level patch support.
      wined3d: Remove draw_primitive_strided.
      d3d8/tests: Add simple DrawRectPatch tests.
      d3d9/tests: Add simple DrawRectPatch tests.
      ddraw: device::GetCurrentViewport returns an error if no viewport is set.
      ddraw: Delete viewports when destroying the device.
      ddraw: Check for NULL pointers in DeleteViewport.
      ddraw: Check for NULL pointers in SetCurrentViewport.
      ddraw: AddViewport holds a reference to the viewport.
      ddraw: Unset the viewport if the current vp is deleted.
      ddraw: Don't check for NULL in GetCurrentViewport.
      ddraw/tests: Add viewport handling tests.

Stefan Leichter (1):
      gdi32: Add stub for GetFontResourceInfoW.

--
Alexandre Julliard
julliard@winehq.org
