The Wine development release 1.3.13 is now available.

What's new in this release (see below for details):
  - Tools for creating MSI installers.
  - Clipboard improvements.
  - Support for po files in the message compiler.
  - Improvements to the Wine debugger.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.13.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.13.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.3.13:

   8560  Mouseover information box is broken after window loses focus.
   8987  FreePDF XP does not install (13709620-c279-11ce-a49e-444553540000 missing: Shell.Application.1)
  11266  3DMark2005 uninstaller fails
  11375  Error during Orcad 16.0 installation
  12120  iSBEM 3.0 doesn't show EULA on startup
  14521  Windows version of OpenJigsaw has graphical glitches.
  14882  UpdateResource fails to delete a resource
  15640  Tile Studio 2.55: Can't export maps without an extension
  16758  tools/winapi/winapi_test: The generated tests produce thousands of failures on 64bit.
  17282  qtest: QUAKE.EXE crashes.
  18853  Notepad++ can't save files without an extension
  19563  Guitar Hero World Tour crashes after dinput's QueryInterface
  19686  Acrobat Reader 1.0 for DOS installer fails
  20158  Fritz 11 doesn't draw buttons properly
  20576  Sluggish 2D graphics on BabasChess
  20802  Uninstall doesn't work for 2gis shell
  21041  Mismatched GlobalLock/HeapFree in X11DRV_CLIPBOARD_ExportString?
  21311  uninstalling visual C++ 2008 causes a crash
  21373  Eve Online: Jukebox dont work
  21471  Uru: Cursor not drawn correctly
  21543  Pasting bitmaps that were created by gnome-screenshot can crash Wine in X11DRV_CLIPBOARD_RenderSynthesizedBitmap
  21669  MiniRacingOnline: In-Game Graphics non-transparent/Not in proper positions
  22330  Dragon Age: Origins doesn't run
  22659  1by1 player: file/song list text overlaps and becomes unreadable if enlarged
  23235  If Xserver does not suppoer MIT-SHM, log get spammed
  23719  Capitalism II fails to install
  23803  rawdump (semi)works with dotnet20, but not mono26
  24050  sparc/linux: port.c:189:2: error: #error You must implement wine_switch_to_stack for your platform
  24368  Incoming: game is uncontrollably fast
  24510  Blur needs msvcr90.dll.__libm_sse2_cos et al
  24547  Secret of Monkey Island and WinIoEx want msvcr80.dll.?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z (and possibly some msvcp80 functions)
  24720  Oblivion crashes, debugger NOT started
  24848  .NET 1.1 uninstall hangs
  24974  D3D Texture formats INTZ and NULL are not supported
  25107  When panning on SeaClear, bits of the chart get 'left behind'
  25195  WINE msi does not uninstall files correctly and does not update registry
  25201  wine: Call from 0x7b838b62 to unimplemented function mscoree.dll.GetFileVersion
  25254  AutoCAD Mechanical 2005 PL: Fails to install
  25268  chm help viewer: blank help pages
  25331  Visual C++ 2005 Express install fails
  25456  ws2_32:sock tests fail for nearly everyone
  25478  MS Office Pro 2010 Trial: activation over the internet fails
  25538  Heroes of Newerth needs native msvcr80
  25544  Mafia 2: Fails to start
  25583  Starcraft II fails to start
  25636  Mirror's Edge crashes when loading the first mission
  25655  Anarchy Online crashes on start-up
  25690  Silverfall fails to start (possible Securom issue)
  25691  ImageList_Duplicate doesn't correctly duplicate full length of has_alpha byte array
  25695  Solo Defender crashes on start, needs msvcr90.dll._realloc_crt
  25743  Burger Shop 2 sets invalid permissions on launch
  25830  urlmon:sec_mgr tests fail on clang
  25845  Compiling fails in kernel32 --without-curses
  25856  Unable to type - in cmd anymore.
  25860  Raid over Moscow fails to start
  25874  tray icon in gnome panel corruption
  25882  Eve online crashes with builtin msvcr80 on unimplemented function _wsopen_s
  25883  Stalker pripyat benchmark crashes with builtin msvcr80 on unimplemented function _sopen_s
  25893  shell32:autocomplete test fails under WINEDEBUG=warn+heap
  25910  Notepad tries to open a file using wrong sharing mode
  25914  Dead Space 2 exits with error
  25925  Bioshock: installer autopatcher fails verification
  25926  part of subwindow sheared by line
  25943  MSI doesn't delete Skype (5.1) files upon deinstallation
  25946  gdi32/font tests fail on ubuntu x86_64
  25964  wine builtin IE crash with  CNCBSecPkg_EN.exe installed :  unimplemented function ntoskrnl.exe.IoGetDeviceInterfaces

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

Changes since 1.3.12:

Akihiro Sagawa (2):
      po: Update Japanese translation.
      wrc: Don't match a po message if a same msgid message is defined, but its msgctxt is null.

Alexander Law (1):
      programs/notepad: Correct sharing mode for opening file in notepad.

Alexander Morozov (10):
      shell32/tests: Add tests for IShellDispatch::NameSpace.
      shell32/tests: Fix test failure on some NT4.
      shell32: Implement IShellDispatch::NameSpace.
      shell32: Partially implement Folder::get_Title.
      winemapi: Implement MAPIResolveName.
      winemapi: Address can contain "SMTP:".
      shell32: Release iTypeInfo on error.
      shell32/tests: Add tests for FolderItem::get_Path.
      ntoskrnl.exe: Add stub for IoGetDeviceInterfaces.
      shell32/tests: NT4 doesn't have the Folder2 interface.

Alexander Scott-Johns (10):
      ole32: Add support for rendering METAFILEPICT clipboard objects.
      ole32: Add support for rendering HBITMAP clipboard objects.
      user32/tests: Test getting the data from synthesized clipboard formats.
      winex11.drv: Implement synthesizing the CF_ENHMETAFILE clipboard format from CF_METAFILEPICT.
      user32: Partially fix clipboard viewer infinite recursion bug.
      ole32: Fix error handling in get_data_from_metafilepict and get_data_from_bitmap.
      winex11.drv: Remove broken HeapFree call.
      notepad: Load UTF-8 encoding name from resources instead of using GetCPInfoEx.
      winex11.drv: Remove unused constant, and fix a comment.
      winex11.drv: Improve error handling in bitmap synthesizing code.

Alexandre Julliard (53):
      dbghelp: Use Dwarf debug info even when part of it is missing.
      wmc: Add a copy of the strmake utility function.
      wmc: Store input file location for each individual message.
      wmc: Add support for generating a po template file.
      wmc: Add support for generating message translations based on po files.
      makefiles: Add rules to update po files from .mc files in maintainer mode.
      kernel32: Convert message translations to po files.
      winefile: Recover some resources that were lost during the po conversion.
      iccvid: Recover some resources that were lost during the po conversion.
      msvcrt: Implemented __control87_2.
      msvcrt: Implemented _statusfp2.
      msvcrt: Implemented _clearfp for SSE2 and x86_64.
      msvcrt: Implemented _fpreset for SSE2 and x86_64.
      msvcrt: Implemented _set_controlfp.
      msvcrt: Add a non-optimized implementation for the SSE2 math functions.
      include: Add a prototype for RtlUnwindEx on x86_64.
      ntdll: Capture the context inside RtlUnwindEx instead of assuming it's already initialized.
      ntdll: Avoid copying and restoring the context in RtlCaptureContext for x86_64.
      ntdll: Implement set_cpu_context for x86_64 directly instead of using the winebuild-generated code.
      ntdll: Implement RtlRaiseException for x86_64 directly instead of using the winebuild-generated code.
      ntdll: Get rid of support for register entry points on x86_64.
      winebuild: Get rid of support for register entry points on x86_64.
      configure: Automatically remove obsolete entries in po files.
      makedep: Add dependencies for the msg.pot file.
      kernel32: Add proper English messages for all error codes.
      winedbg: Add dumping of floating point registers for x86_64.
      dbghelp: Add a helper function to determine the name of the wine loader.
      dbghelp: Use wine64 as loader name on 64-bit.
      user32: Propagate the LoadImage flags into the low-level loader functions.
      user32: Fix LoadImage behavior with zero size and no LR_DEFAULTSIZE.
      server: Create anonymous file mappings in the config directory if the server directory is mounted noexec.
      ntdll: Fix frame address check in RtlCaptureStackBackTrace to match what RtlUnwind does.
      dbghelp: Fix an uninitialized return value.
      ntdll/tests: Avoid sizeof in a trace.
      opencl: Avoid size_t in traces.
      winebuild: Don't remove stdcall decorations on non-x86.
      ntdll: Avoid copying and restoring the context in RtlCaptureContext for i386.
      ntdll: Add a helper function for checking stack frame limits.
      ntdll: Add support for longjmp in RtlUnwindEx.
      msvcrt: longjmp doesn't have a return value.
      msvcrt: Implement longjmp for x86_64.
      setupapi: Fix access rights for cabinet creation.
      cabarc: Initial version of the cabarc.exe tool, with support for creating a cabinet.
      cabarc: Add support for listing and extracting cabinets.
      cabinet: Use constants instead of hard-coded numbers for file open flags.
      cabinet: Replace the fci_set_error macro by a proper function.
      cabinet: Call FCI function pointers explicitly instead of hiding them inside macros.
      cabinet: Pass an FCI pointer to internal functions instead of a handle.
      cabinet: Move the internal FCI structure to fci.c.
      cabinet: Add a helper function to set error code in FDI.
      cabinet: Pass an FDI pointer to internal functions instead of a handle.
      cabinet: Call FDI function pointers explicitly instead of hiding them inside macros.
      cabinet: Move internal FDI definitions to fdi.c.

Alistair Leslie-Hughes (1):
      mshtml: Implement IHTMLStyle put_borderTopColor.

Andrew Nguyen (13):
      server: Filter the WOW64 registry access flags before performing the access check.
      shell32/tests: Release the IAutoComplete interface on a failure path.
      shell32: Improve initialization state and parameter handling in IAutoComplete::Init.
      shell32: Store the autocompletion object pointer in a window property rather than in the window user data.
      shell32: Keep at least one reference to the autocompletion object at initialization until the edit window is destroyed.
      ntdll: Fix one-time warning message output.
      msvcr90/tests: Avoid casting away const in comparison functions.
      ntdll/tests: Avoid casting away const in comparison functions.
      dxdiagn: Avoid zeroing memory in container functions.
      dxdiagn: Convert the container linked list to a standard Wine list.
      dxdiagn: Convert the property linked list to a standard Wine list.
      dxdiagn: Simplify the root container initialization.
      dxdiagn: Avoid caching a single instance of the root container.

André Hentschel (3):
      gameux: Only trace on success (clang).
      mountmgr: Use define instead of hardcoded value.
      kernel32: Use define instead of hardcoded value.

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

Austin English (6):
      advapi32/tests: Make sure to use return value (LLVM/Clang).
      wintrust/tests: Make sure return values are used (LLVM/Clang).
      wintrust/tests: Make sure return values are used (LLVM/Clang).
      wintrust/tests: Make sure return values are used (LLVM/Clang).
      wintrust: Remove a dead assignment (LLVM/Clang).
      advapi32/tests: Make sure to use return value (LLVM/Clang).

Charles Davis (6):
      dinput: Don't link to/include Carbon on Mac OS X.
      ntdll: Check for case-insensitive volumes.
      winecoreaudio: Don't use Component Manager on Mac OS 10.6.
      winecoreaudio: Fix deprecation warnings in audiounit.c.
      winecoreaudio: Fix deprecation warnings in audio.c.
      winecoreaudio: Fix deprecation warnings in mixer.c.

David Hedberg (1):
      gdi32: Stay within the clipping area when painting text background.

Detlef Riekenberg (5):
      kernel32: Don't mask when printing unsupported flags in load_library.
      msvcr90: Implement _stat32, _fstat32, _wstat32.
      include: Add missing _stat64i32 / _stat32i64.
      msvcrt: Add private define and header tests for _set_error_mode options.
      msvcrt: Use the _set_error_mode value to switch between a dialogbox and stderr for C runtime messages.

Dmitry Timoshkov (3):
      winex11.drv: Associate the real DC transformation with cached font data.
      gdi32: Add ExtSelectClipRgn() tests for memory and window DCs.
      winex11.drv: Make sure that default clipping region exists before calling ExcludeUpdateRgn().

Eric Pouech (13):
      kernel32: Added missing include to term.c.
      kernel32: In edit line, fix the insert key management.
      kernel32: No longer init the terminfo database nor application key mode when 0 or 1 are not bound to a tty.
      kernel32: Properly manage UTF-8 (and any wcs) input strings.
      kernel32: Added support for ctrl-home (aka clear from beginning of line) in line edition in win32 mode.
      kernel32: Store key len in dbkey_pair structure for efficiency reasons.
      kernel32: Added support for extended capacities in terminfo for xterm-like terminals.
      kernel32: Added shift & ctrl modifiers for function keys.
      kernel32: Use binary search for key lookup in terminfo generated data.
      winedump: Added definition and dumping of thread local variables.
      dbghelp: Added support for variables in thread storage.
      dbghelp: Properly declare variables with thread storage from codeview debug format.
      winedbg: Added support for variables with thread storage.

Greg Geldorp (8):
      gdi32/tests: Fix font tests on Arabic machines.
      user32/tests: Fix edit tests.
      riched20/tests: Fix editor tests.
      riched32/tests: Fix editor tests.
      shell32/tests: Remove shlwapi dependency.
      msi/tests: Check 64-bit reg view if key not present in 32-bit view.
      shell32/tests: Use long file name.
      winmm/tests: Skip some tests on VMware.

Hans Leidekker (22):
      msi: Don't interpret assembly name attributes.
      msi: Implement the MsiPublishAssemblies and MsiUnpublishAssemblies standard actions.
      wininet/tests: Trace errors from InternetReadFile in test_basic_request.
      msi: Check the return value of fetch_int (clang).
      msi/tests: Consistently test return values (clang).
      msi: Check the return value of IActiveScript_AddNamedItem (clang).
      msi: Make sure the return value is initialized in save_table (clang).
      msi: Use a return value (clang).
      msi/tests: Test a return value (clang).
      msi: Check a return value (clang).
      msi: Return the correct disk prompt size from MsiSourceListEnumMediaDisksW (clang).
      msi: Initialize a variable in get_patch_product_codes (clang).
      msi: Skip rollback custom actions.
      winhttp/tests: Test a return value (clang).
      mountmgr: Add a stub implementation of ioctl 0x560000.
      kernel32/tests: Add a test for ioctl 0x560000.
      programs: Add a stubbed PlugPlay service.
      hnetcfg: Return success from fw_app_put_Enabled.
      msi: Reset file attributes before removing a file.
      programs: Add winemsibuilder.
      msi: Handle out-of-memory condition in encode_streamname.
      msi: Try harder to remove non-persistent directories.

Henri Verbeet (40):
      wined3d: Remove IWineD3DSurface::RealizePalette() from the public interface.
      wined3d: Remove IWineD3DSurface::DrawOverlay() from the public interface.
      wined3d: WINED3DFMT_INTZ is a FOURCC format.
      wined3d: Use dot() instead of length() in shader_glsl_nrm().
      wined3d: Disable vertex shader output clamping.
      d3d10: Remove a redundant assignment in parse_fx10_object() (LLVM/Clang).
      d3d9: Remove some useless ERRs (LLVM/Clang).
      d3d8: Remove a useless ERR (LLVM/Clang).
      wined3d: Do checks at the start of surface_init() (LLVM/Clang).
      wined3d: Verify we have at least one framebuffer attachment before doing clears or draws.
      wined3d: Add support for the NULL format.
      d3d8/tests: Add a test for the NULL format.
      d3d9/tests: Add a test for the NULL format.
      wined3d: Set all render targets to NULL in IWineD3DDeviceImpl_Uninit3D().
      d3d9: Check the correct swapchain in IDirect3DDevice9Impl_GetSwapChain() (LLVM/Clang).
      ddraw: Link directly to wined3d.
      widl: Support forward type declarations.
      wined3d: Set color / depth / stencil surfaces to NULL before releasing them in IWineD3DDeviceImpl_Uninit3D().
      wined3d: Remove COM from the stateblock.
      wined3d: Get rid of the IWineD3DStateBlock typedef.
      wined3d: Get rid of the IWineD3DStateBlockImpl typedef.
      d3d8/tests: Release doesn't return a HRESULT (LLVM/Clang).
      d3d9/tests: Check ColorFill() return codes in color_fill_test() (LLVM/Clang).
      wined3d: Just fail if the texture type is not supported in create_glsl_blt_shader() (LLVM/Clang).
      wined3d: Pass a const adapter to the format caps checking functions.
      d3d9/tests: Check another return value in maxmip_test() (LLVM/Clang).
      wined3d: Make volumetexture_ops static.
      wined3d: Remove COM from IWineD3D.
      wined3d: Get rid of the IWineD3D typedefs.
      wined3d: Check if formats are supported as render target in srgbwrite_format_test().
      winex11.drv: Only query for XShm on first use.
      wined3d: Remove COM from the vertex declaration.
      wined3d: Get rid of the IWineD3DVertexDeclaration typedefs.
      wined3d: Remove COM from the palette.
      wined3d: Get rid of the IWineD3DPalette typedefs.
      wined3d: Remove COM from the clipper implementation.
      wined3d: Get rid of the IWineD3DClipper typedefs.
      wined3d: Use an internal call table for query operations.
      wined3d: Remove COM from the query implementation.
      wined3d: Get rid of the IWineD3DQuery typedefs.

Huw Davies (3):
      widl: Initialise [out] only parameters if they are user types or interface pointers.
      widl: Don't dereference if the referenced type is a user type.
      rpcrt4/tests: Add a test for marshalling a pointer to a user type, where the user type is itself a pointer.

Hwang YunSong (1):
      po: Update Korean resource.

Iain Arnell (2):
      gdiplus: C++ fixes for headers.
      gdiplus: Qualify reference to Gdiplus::Pixelformat.

Jacek Caban (12):
      urlmon: Fixed key name size and format in open_zone_key.
      jscript: Fixed some clang warnings.
      mshtml: Added script execution time tests.
      mshtml: Added support for recursive script runners.
      wininet: Handles handling clean up.
      wininet: Keep handles invalid but reserved in InternetCloseHandle.
      wininet: Added more InternetCloseHandle tests.
      wininet: Moved creation of an object and allocating handles to common function.
      mshtml: Don't try forwarding calls to Gecko that are not implemented there anyways.
      wininet: Moved freeing object to WININET_Release.
      wininet: status_string clean up.
      mshtml: Added nsIURI::SetSpec implementation.

Joris Huizer (1):
      rpcrt4: Reduce scope of variable (Clang).

Juan Lang (7):
      crypt32/tests: Test return value rather than output buffer before checking buffer contents (clang).
      crypt32/tests: Test some return values (clang).
      crypt32/tests: Remove dead assignments (clang).
      crypt32/tests: Don't assign a return value that's never checked (clang).
      crypt32/tests: Add tests that show that CertRDNValueToStr doesn't quote (based on a patch by Christian Inci).
      crypt32/tests: Test CertNameToStr's quoting behavior with CERT_SIMPLE_NAME_STR.
      crypt32: Fix string quoting in CertRDNValueToStrA/W and CertNameToStrA/W.

Ken Thomases (1):
      mountmgr: Balance volume references in add_volume().

Kusanagi Kouichi (7):
      kernel32: Include term.h conditionally.
      gdi32/tests: Add some more tests for GetCharABCWidthsA.
      gdi32: Reject invalid character range in GetCharABCWidthsA.
      gdi32: Upper 24 bits of a character range must be same.
      gdi32/tests: Consolidate identity matrices.
      gdi32/tests: Add tests for GetGlyphOutlineA.
      gdi32: Check if a character is double byte or single byte.

Loïc Maury (1):
      ntdll : Implement CDROM_Verify to work on Mac OS X.

Marcus Meissner (2):
      ws2_32: Implemented SO_CONNECT_TIME stub.
      user32: Get MDI icon as close the "small icon" as possible.

Michael Stefaniuc (43):
      ddraw: COM cleanup for the IClassFactory iface.
      ddrawex: COM cleanup for the IClassFactory iface.
      ddrawex: COM cleanup for the IDirectDrawFactory iface.
      ddrawex: COM cleanup for the IDirectDraw iface.
      ddrawex: COM cleanup for the IDirectDraw2 iface.
      ddrawex: COM cleanup for the IDirectDraw3 iface.
      ddrawex: Rename impl_from_dd4() to impl_from_IDirectDraw4().
      ddrawex: COM cleanup for the IDirectDraw4 iface.
      d3d8: COM cleanup for the IDirect3D8 iface.
      avifil32: Use ifaces instead of vtbl pointers in IAVIEditStreamImpl.
      avifil32: Avoid forward declarations of iface methods.
      msxml3: COM cleanup for the IBindStatusCallback iface.
      mstask: COM cleanup for the IClassFactory iface.
      mstask: COM cleanup for the ITaskTrigger iface.
      mstask: COM cleanup for the ITaskScheduler iface.
      mstask: Use ifaces instead of vtbl pointers in TaskImpl.
      mapi32: COM cleanup for the IMalloc iface.
      sti: COM cleanup for sti.c.
      msxml3: COM cleanup for the IXMLDOMNode iface in xmlnode.
      msxml3: COM cleanup for the IXMLDOMNode iface in unknode.
      ddrawex: Use unsafe_impl_from_IDirectDrawSurface3() for application provided ifaces.
      ddrawex: Rename impl_from_dds3() to impl_from_IDirectDrawSurface3().
      ddrawex: COM cleanup for the IDirectDrawSurface3 iface.
      d3dx9_36/tests: COM cleanup for the ID3DXInclude iface.
      d3dcompiler_43/tests: COM cleanup for the ID3DInclude iface.
      d3d8: Pass an object instead of an iface to an internal function.
      d3dx9_36: COM cleanup for the ID3DXEffect iface.
      d3dx9_36: COM cleanup for the ID3DXEffectPool iface.
      d3dx9_36: COM cleanup for the ID3DXInclude iface.
      d3dx9_36: COM cleanup for the ID3DXBuffer iface.
      d3dx9_36: COM cleanup for the ID3DXFont iface.
      d3dx9_36: COM cleanup for the ID3DXMatrixStack iface.
      d3dx9_36: COM cleanup for the ID3DXMesh iface.
      d3dx9_36: COM cleanup for the ID3DXSprite iface.
      shell32: Use ifaces instead of vtbl pointers in RecycleBin.
      d3d8: Use impl_from_IDirect3DDevice8() instead of the iface to object cast.
      d3d8: Finish the COM cleanup of the IDirect3DDevice8 iface.
      d3d8: COM cleanup for the IWineD3DDeviceParent_iface.
      d3d8: COM cleanup for the IDirect3DVolume8 iface.
      d3d8: COM cleanup for the IDirect3DSwapChain8 iface.
      d3d8: Remove the unused struct IDirect3DResource8Impl.
      d3d8: COM cleanup for the IDirect3DCubeTexture8 iface.
      d3d8: COM cleanup for the IDirect3DTexture8 iface.

Mike Kaplinskiy (6):
      ws2_32/tests: Add a test for an overlapped send.
      ws2_32: Allow sending FD_WRITE right after scheduling the async.
      ws2_32: Fix up iovecs after transmission in WS2_send instead of WS2_sendto.
      ws2_32: Use the iosb to keep track of how many bytes we sent.
      ws2_32: Finish an overlapped send only if we sent everything.
      server: Fix connect failures on newer kernels.

Nikolay Sivov (22):
      shell32: Fix a parent PIDL leak (Valgrind).
      shell32/tests: Fix couple PIDL leaks in tests.
      oleaut32/tests: Fix safearray leaks, test return value after array destruction.
      oleaut32: Unmarshalled safearray is always unlocked.
      msxml3: Fix invalid read before allocated block (Valgrind).
      msxml3: Fix interface leak (Valgrind).
      urlmon/tests: Fix a leak in test (Valgrind).
      oleaut32: Fix a couple of leaks on typeinfo release (Valgrind).
      msvcrt: Implemented _sopen_s.
      msvcrt: Implement _wsopen_s.
      msvcrt: Forward _realloc_crt to realloc.
      oleaut32: Fix default parameter variant leak (Valgrind).
      comctl32/tests: Initialize item mask on item insert (Valgrind).
      explorerframe/tests: Initialize hit test point before first use (Valgrind).
      shlwapi/tests: Reset cookie after service revoked (Valgrind).
      shell32/tests: Fix a dependency on unimplemented function call (Valgrind).
      msvcrt: Implement _fcvt_s().
      oleaut32/tests: Fix a IRecordInfo leak (Valgrind).
      oleaut32/tests: Fix a safearray leak (Valgrind).
      ntdll: Fix a compile time warning.
      msvcrt: Use pointer exchange to set demangled name instead of section lock.
      msvcrt: Partially implement type_info::name_internal_method().

Paul Vriens (2):
      explorerframe/tests: Don't compare potentially uninitialized variables (Coverity).
      shdocvw: Initialize variable (Coverity).

Piotr Caban (2):
      mshtml: Abort more request in abort_document_bindings.
      mshtml: Make sure previous request is stopped before starting new request in IPersistMoniker and IPersistStreamInit.

Reece Dunn (1):
      hlink/tests: Add hres checks for the IHlink_GetMonikerReference calls (clang).

Stefan Dösinger (3):
      d3d9: Use a proper window class in the device tests.
      d3d9: Work around an odd nvidia windows bug.
      d3d9: Add an sRGB format test.

Stefan Reimer (2):
      winemp3: Fixed exit condition within decoding loop.
      wined3d: Adding AMD HD5670, HD5570, HD5550, HD5450 detection.

Sven Baars (1):
      po: Update the Dutch translation.

Vincent Povirk (11):
      gdiplus: Factor out the gdi32 code of GdipFillRegion.
      gdiplus: Factor the matrix creation code out of GdipTransformPoints.
      gdiplus: Add a software implementation of GdipFillRegion.
      gdiplus: Add a software implementation of hatch brushes.
      gdiplus: Add a software implementation of line gradient brushes.
      shell32: Test links to executable filenames lacking the extension.
      include: Add declaration of GdipRecordMetafile.
      gdiplus: Stub GdipGetHemfFromMetafile.
      gdiplus: Test for EMF+ recording.
      gdiplus: Test the types of records in an empty EMF+.
      mscoree: Implement GetFileVersion.

Vitaliy Margolen (4):
      dinput: Combine ASCII and Unicode device create callbacks. Add tests.
      dinput: Fix typo. Found by clang.
      dinput: Return correct error code for DIPROP_VIDPID.
      dinput: Ignore EV_MSC events instead of printing fixme.

Wolfram Sang (1):
      comdlg32: Filedlg should not add extension if it contains a glob.

max@mtew.isa-geek.net (1):
      ntdll: Correct 'b' parameter descriptions for _alldiv and _aulldiv.

--
Alexandre Julliard
julliard@winehq.org
