The Wine development release 1.3.27 is now available.

What's new in this release (see below for details):
  - Support for multisampling in Direct3D.
  - New version of the Gecko engine.
  - Improvements to the network proxy handling.
  - Better write support in MSXML.
  - Side-by-side manifests for built-in libraries.
  - Various bug fixes.

The source is available from the following locations:

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

   2841  Missing Minimize Button
   5883  Printing does not work for ole visual basic 6
   6278  PITy crashes on exit
   6399  Crash with debugging tools of Gameboy Advance emulator "Visualboy Advance"
   6687  Visual Basic crashes when running a program and pressing a button in it
   8354  Mouse is constantly recentered is some games
   8724  Total Annihilation: PCM mute/unmute/change in WineOSS
  10245  Half-life 2 font issue with 0.9.48 (works 0.9.40)
  10340  Pro evolution soccer 2008
  12818  Age of Mythology GOLD crashes when exiting the game
  12912  Torque Game Builder: Blanks the screen.
  13070  Deus Ex 1.1 - Invisible War fails to launch new game
  13085  TH06: No FPS limit in fullscreen mode
  14377  Crusader Kings: Instant crash when using bride ledger (and some other ledgers)
  14762  GeforceFX series: fullscreen PP effect issues / RECT texcoord fixup
  17040  Portal crashes when facing towards the exit on the first level
  18873  Civilization IV beyond the sword crashing at startup
  20413  AtcWindows - sound broken
  20758  Missing nul termination in string passed to callback of RtlQueryRegistryValues()?
  21102  Hitman 2: Silent Assassin fails to draw intro cinematic
  21492  Creating new/opening existing project fails in WinterMute Engine
  21785  The Westerner: no background in menu + errors when loading
  21805  The game "Which" has incorrect rendering with whitewashed visuals
  21814  The game "Which" fails to load a d3dxof object file
  21850  Sonic & Knuckles Collection's game window can't be decorated by window managers
  22261  Love: "device already allocated" handling - requires patching winealsa.drv or using esound backend
  22722  Wine running out of address space (MacOS)
  23870  Text not displayed in King's Bounty: the Legend
  23871  Stuttering animation in Devil May Cry 4
  23952  Fullscreen DirectX applications with enabled DRI won't start
  25047  NFS Porsche: Some car paints aren't rendered properly
  25065  NFS Porsche: Video track isn't played in intro
  25067  NFS Porsche: Background slides are flickering in main menu
  26090  graphics output broken in commercial app "Stoe X-Area Recipe"
  26796  Deadlock and crash in "gstdemux.c: GSTImpl.csFilter"
  26890  winecfg fails to update configuration
  27155  averasell crashes on load
  27326  DiRT 3 game fails to launch (SecuROM 8.x and SecuROM Data File Activation 2.x/Product Activation)
  27834  Photosynth installer crashes in msi
  27903  IBExpert crashes on start after upgrading wine (IBExpert was Platinum before)
  27920  ComboBoxEx doesn't process WM_ENABLE properly
  27924  NVIDIA GeForce GTX560 Ti not being detected
  27932  Starcraft II does not render correctly, eventually crashes
  27950  fr08 graphical demo crashes on startup
  27954  X-Lite 4 installer aborts after failing to start FontCache3
  27955  Warspear Online sound stops after a while (Pulseaudio + patched alsa-plugins)
  27962  regression stops Age of Wonders from working
  27966  iexplore crash whenever click on any links
  27984  Starcraft 2 Editor: Renaming an item in the trigger tree suggests it's displayed text and not the item name.
  27988  ibexpert can't start since wine 1.3.25
  27990  Freespace 2 launcher: buttons not drawn correctly
  28003  The Elder Scrolls III Morrowind: object positions are changed
  28006  RC Cars demo installer fails to start (installer complains about inadequate processor features)
  28015  Rome Total War crashes at startup
  28026  chromium crash if --no-sandbox hasn't set
  28046  Process Explorer crashes
  28069  Skype 5.5: Fails to launch after installation from msi with: Failed to get proc address for DnsFree (DNSAPI.dll)
  28084  Jedi Knight: Dark Forces II segfaults when Display Hardware Acceleration is enabled
  28088  Wine can play audio despite of disabled sound drivers
  28105  NFS Porsche: Crash after changing graphics options
  28137  Bloxx It crashes
  28146  GODS:Lands of Infinity changes the gamma to an overly bright level
  28180  Operation Flashpoint crashes with sound enabled

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

Changes since 1.3.26:

Alexander Morozov (3):
      cryptui: Disable some buttons if a certificate is not selected.
      include: Fix CRYPTUI_SELECTCERTIFICATE_STRUCTA declaration.
      cryptui: Add stubs for CryptUIDlgSelectCertificateA/W.

Alexandre Julliard (16):
      kernel32/nls: Generate some plausible data for LOCALE_SNATIVEDISPLAYNAME.
      advapi32/tests: Skip some tests if QueryServiceStatusEx is missing.
      msvcp90: Add separate entry points for functions with different calling conventions.
      advapi32/tests: Skip some tests if EnumServicesStatusExA is missing.
      setupapi: Add support for creating WinSxS manifest files from fake dll resources.
      comctl32: Create the WinSxS manifest from a resource.
      msvcr80: Add a WinSxS manifest resource.
      msvcr90: Add a WinSxS manifest resource.
      msxml3: Add a WinSxS manifest resource.
      msxml4: Add a WinSxS manifest resource.
      msxml6: Add a WinSxS manifest resource.
      gdiplus: Add a WinSxS manifest resource.
      gdi32/tests: Make sure the bitmap info is initialized in the GetDIBits test.
      ntdll/tests: Wait for async I/O to complete when the result is STATUS_PENDING.
      setupapi: Delay freeing registered dlls until they have all been processed.
      winecfg: Fix deletion of registry keys for Wow64 mode.

Andrew Eikum (1):
      mmdevapi: Disable sound if the user explicitly selects no driver.

Andrew Talbot (14):
      cabinet: void functions should not return a value.
      comctl32: void functions should not return a value.
      compobj.dll16: void functions should not return a value.
      msvcp90: void functions should not return a value.
      msvcrt: void functions should not return a value.
      ole2.dll16: void functions should not return a value.
      openal32: void functions should not return a value.
      comctl32: Remove redundant function declaration.
      shell32: Remove redundant function declaration.
      dbghelp: Constify some variables.
      krnl386.exe16: Constify a variable.
      msvcrt: Constify some variables.
      winmm: Constify some variables.
      netapi32: Fix to prevent access beyond nul terminator.

André Hentschel (16):
      ntdll: Accept double-digit CPU families.
      winex11: Fix function header for building without xrender headers.
      gdi32/tests: Consistently print out all infos about non-equal rects.
      po: German translations added and updated.
      ieframe: Only print the FIXMEs once for progress bar handling.
      winex11: Validate the ramps also when not converting them to single values.
      gdi32: Initial gamma setting tests.
      wininet: Use the constants from the wininet header.
      wininet: Don't return a relative path when building the proxy url request.
      wininet: Parse user and password for proxy authentication.
      wininet: Test and fix possible error situations for InternetQueryOption with INTERNET_OPTION_PROXY.
      winex11: Reject too bright gamma ramps.
      po: Update German translation.
      shell32/tests: Initial directory tests for ShellExecuteEx.
      mshtml: Initialize return value.
      mshtml: Remove obsolete proxy handling.

Aric Stewart (5):
      usp10: Implement Multiple Substitution Subtable.
      usp10: Always use a SCRIPT_STATE and SCRIPT_CONTROL structure in ScriptStringAnalyse.
      usp10/tests: Refactor test_ScriptXtoX to make testing varying datasets easier.
      usp10: In ScriptXtoX use cChars as the item is the character index.
      usp10/test: Test ScriptXtoX on an RTL set with differing cChars and cGlyphs.

Aurimas Fišeras (2):
      po: Fix some errors in Lithuanian translation.
      po: Update Lithuanian translation.

Austin English (3):
      kernel32/tests: Remove win9x hacks.
      d3d8/tests: Make sure to use return values (LLVM/Clang).
      gdi32/tests: Remove win9x hacks.

Bernhard Loos (9):
      ntdll: Initialize the Length field of PEB->LdrData.
      kernel32: Make CreateThread hotpatchable.
      kernel32: Create(Named)Pipe uses an nonalertable io mode.
      winegcc: Support a trailing / in paths to winebuild.
      kernel32: CreateFile uses an nonalertable io mode.
      msi: Use an array instead of a hashtable for WHEREVIEW.
      msi: Make WHEREVIEW able to deal directly with multiple tables.
      msi: Protected primary keys against modification.
      msi: Implement proper sorting in WHEREVIEW.

Bruno Jesus (3):
      ws2_32/tests: Add MSG_PEEK tests on recv().
      user32/tests: Add combobox CB_SETDROPPEDWITH/CB_GETDROPPEDWIDTH tests.
      ws2_32: Fix false-positive write fds on select().

Chris Robinson (1):
      wined3d: Don't use the old depth-stencil surface after decrementing its ref count.

Damjan Jovanovic (1):
      winemenubuilder: Use the command from the "open" verb.

Francois Gouget (31):
      po: Remove English strings from the Hebrew translation.
      po: Fix a couple of issues around linefeeds in the Persian translation.
      po: Remove English strings from the Hungarian translation.
      comdlg32: Specify a message context for 'mm'.
      taskmgr: Remove some useless and untranslatable popup labels.
      user32/tests: Test what happens to a WM_QUIT posted to a window that gets destroyed.
      user32: When destroying a window, preserve the first WM_QUIT message that was posted to it.
      advapi32/tests: Test what happens when a service fails to or cannot start.
      wineps.drv: Make PSDRV_WriteRGB() static.
      wmc: Remove a stray reference to wrc in the man page.
      po: A few French translation fixes.
      oleview: Replace the CLSCTX_XXX strings with proper English sentences.
      hhctrl.ocx: Convert an unneeded popup menu label to a comment.
      shdoclc: Convert some unneeded popup menu labels to comments.
      notepad: Tweak an error message for consistency.
      programs: Document the reason for the WriteConsole() fall back.
      kernel32: Fix the CreateMailslot[AW]() spec. The first parameter is an input string.
      wrc: If the message context is 'do not translate', then don't add the string to the PO file.
      ntdll/tests: Fix the spelling of IID_Endianness.
      shlwapi/tests: Fix the spelling of IID_Endianness.
      wrc: Fix the spelling of the --endianness option.
      ntdll: Detect if NX support is enabled.
      Assorted spelling fixes.
      msxml3/tests: Add a trailing '\n' to an ok() call.
      msrle32: Mark 'WINE-MS-RLE' as not needing translation.
      msvidc32: Mark 'MS-CRAM' as not needing translation.
      notepad: Mark the page header as not needing translation.
      shdoclc: Mark the page print footer as not needing translation.
      winefile: The title format string cannot really be translated so remove it from the resources.
      avifil32: The stream format string cannot really be translated so remove it from the resources.
      psapi/tests: Fix the EnumProcessModules() test and provide more diagnostic information if it fails.

Frédéric Delanoy (36):
      cmd: Use CSTR_* instead of hardcoded values as result of CompareStringW.
      cmd: Remove reference to no longer existing WCMD_read_console from header file.
      cmd: Clarify some trace messages.
      cmd/tests: Fix bug where an output line was marked as matching when the expected line only differs by a terminal @space@.
      cmd: Fix a FOR parsing bug when multiple spaces follow an IN.
      cmd: Rename WCMD_strtrim_leading_spaces to WCMD_skip_leading_spaces to better reflect its purpose.
      cmd: Constify some function parameters.
      cmd/tests: Add basic cd tests.
      cmd/tests: Add @tab@ keyword recognition.
      cmd/tests: Add tests for tab handling.
      jscript: Don't copy more than needed in parse_string_literal.
      cmd: Fix ECHO tab issues.
      cmd: Fix FOR tab handling.
      po: Update French translation.
      cmd: Fix FOR tab handling.
      cmd: Skip tabs as well as spaces in WCMD_skip_leading_spaces.
      cmd/tests: Add REM tests.
      cmd: Fix REM tab handling.
      cmd: Fix if/else tab handling.
      cmd: Misc tab fixes.
      cmd/tests: Test handling of strings starting with on/off using the ECHO builtin.
      cmd/tests: Add tests for variables substrings.
      cmd/tests: Add attrib tests.
      cmd/tests: Ensure ATTRIB tests pass on more Windows platforms.
      cmd: Make some WCHAR arrays static.
      cmd/tests: Add FOR tests for various quoted parameters.
      cmd/tests: Add basic FOR /F tests.
      cmd/tests: Add tests for FOR /F 'eol' option.
      cmd/tests: Add tests for FOR /F 'delims' option.
      cmd/tests: Add tests for FOR /F 'skip' option.
      cmd: Quiet a noisy 'FOR /F' fixme.
      cmd: Add @drive@ keyword, replaced by drive letter.
      cmd: Add @drive@ keyword, replaced by drive letter.
      cmd: Add @path@ keyword, replaced by regular non-expanded path.
      cmd: Add @shortpath@ keyword, replaced by expanded path with short names.
      cmd/tests: Add variable substitution tests.

Grazvydas Ignotas (5):
      gdi32: Use correct name for elfFullName.
      gdi32/tests: Check for exact fonts before doing fullname test.
      gdi32/tests: Add additional font to fullnames test.
      ntdll/tests: Test NtQueryDirectoryFile with different ReturnSingleEntry and RestartScan flags.
      ntdll: Use swapping method to return . and .. as first entries.

Hans Leidekker (15):
      msi/tests: Use a package code that is different from the product code.
      msi: Print a warning instead of a fixme if we fail to open the database.
      msi: Don't create a temporary copy of the package.
      msi: Remove local patch packages when the product is removed.
      msi: Initialize the installation context from the registry if the product is installed.
      msi: Remove icons when the product is uninstalled.
      msi/tests: Clean up local packages.
      msi/tests: Accept one more estimated size.
      msi/tests: Skip a test if the process is limited.
      msi: Resolve the target folder if necessary when building link filenames.
      dnsapi: Mark some test results as broken and conform to the more recent behavior.
      dnsapi: Implement DnsFree.
      gdi32/tests: Accept one more return value from EnumICMProfilesA.
      winhttp: Support setting the WinHttpRequestOption_EnableRedirects option.
      programs: Add a stub FontCache3.0.0.0 service.

Henri Verbeet (50):
      wined3d: Add compressed surface support to surface_cpu_blt().
      wined3d: Reuse convert_a8r8g8b8_x8r8g8b8() for B8G8R8X8 -> B8G8R8A8 conversions.
      wined3d: Merge FindContext() into context_acquire().
      wined3d: Draw buffers are per-framebuffer state.
      wined3d: Don't allow blits with an invalid destination rectangle when a clipper is set either.
      wined3d: Allow color fills on FBO attachable surfaces in ffp_blit_supported().
      wined3d: Directly call surface_cpu_blt() in cpu_blit_color_fill().
      wined3d: Reject color fills on sysmem surfaces in ffp_blit_supported().
      wined3d: Move surface_color_fill() based color fills from IWineD3DSurfaceImpl_BltOverride() to wined3d_surface_blt().
      wined3d: Move FBO based color blits from IWineD3DSurfaceImpl_BltOverride() to wined3d_surface_blt().
      wined3d: Reject color blits on sysmem surfaces in arbfp_blit_supported().
      wined3d: Move arbfp based color blits from IWineD3DSurfaceImpl_BltOverride() to wined3d_surface_blt().
      wined3d: Reject color blits on sysmem surfaces in ffp_blit_supported().
      wined3d: Rename WineD3D_ChoosePixelFormat() to context_choose_pixel_format().
      wined3d: Only delete the GL contexts after unloading resources in wined3d_device_reset().
      wined3d: Just call resource_unload() in updateSurfaceDesc().
      wined3d: Introduce a function to update a swapchain's render_to_fbo field.
      wined3d: Make the shader parameter to shader_glsl_generate_pshader() const.
      wined3d: Make the shader parameter to shader_glsl_generate_vshader() const.
      wined3d: Make some parameters to get_glsl_program_entry() const.
      wined3d: Don't get rid of the user memory unless we're actually called with NULL in surface_set_mem().
      wined3d: Add a registry key to disable rendering swapchains onscreen.
      wined3d: Set the current location to SFLAG_INTEXTURE instead of SFLAG_INDRAWABLE in wined3d_surface_depth_blt().
      wined3d: Keep track of a surface's "draw location".
      wined3d: Use draw_binding in arbfp_blit_surface().
      wined3d: Use draw_binding in device_clear_render_targets().
      wined3d: Use draw_binding in wined3d_surface_blt().
      wined3d: Make the device parameter to drawStridedSlow() const.
      wined3d: Make the ctx parameter to WineD3D_ReleaseFakeGLContext() const.
      wined3d: Make the gl_info parameter to wined3d_guess_gl_vendor() const.
      wined3d: Use draw_binding in IWineD3DSurfaceImpl_BltOverride().
      wined3d: Use draw_binding in surface_unmap().
      wined3d: Use draw_binding in surface_realize_palette().
      wined3d: Use draw_binding in surface_unload().
      wined3d: Use draw_binding in swapchain_gl_present().
      wined3d: Use draw_binding in context_apply_blit_state().
      wined3d: Bind the system framebuffer based on the actual location in context_apply_fbo_state().
      wined3d: Pass a gl_info pointer to select_fragment_implementation().
      wined3d: Pass a gl_info pointer to select_shader_backend().
      wined3d: Pass a gl_info pointer to select_blit_implementation().
      wined3d: Simplify context_apply_fbo_state_blit().
      wined3d: Get rid of the location fixup for ORM_FBO in surface_load_location().
      wined3d: Get rid of the location fixup for ORM_FBO in surface_modify_location().
      wined3d: Get rid of the location fixup in surface_blt_fbo().
      wined3d: Also print an attachment's multisample type in context_check_fbo_status().
      wined3d: Explicitly specify the resource location to context_attach_depth_stencil_fbo().
      wined3d: Introduce a separate function for attaching depth / stencil renderbuffers.
      wined3d: Get rid of the current multisampling support.
      wined3d: Add multisampling support.
      wined3d: Enable multisampling by default.

Huw Davies (19):
      wineps: Don't write a PostScript trailer if we haven't written a header.
      winex11: Sync a dib section's bits before copying the brush.
      winex11: Simplify rectangle operations.
      gdi32: Fix colour table comparison.
      gdi32: Avoid a possible unnecessary conversion if PutImage is called with zero biClrUsed.
      gdi32: Allow SetBitmapBits to set incomplete scanlines.
      gdi32: Add a helper to retrieve the bitmap functions.
      gdi32: Use the dib driver GetImage and PutImage implementations in GetBitmapBits and SetBitmapBits when appropriate.
      gdi32: Avoid directly accessing the bits ptr where possible.
      gdi32: Simplify dibdrv_PutImage a little.
      gdi32: Use the gdi_image_bits structure to maintain the dib driver's bits.
      gdi32: Move to using a multi-line pen object-level function.
      gdi32: Implement Polyline and PolyPolyline in the dib driver.
      gdi32: Change the object-level brush function to accept a stand-alone dib and a separate clip region.
      gdi32: Move the dib driver's GetImage and PutImage to a new source file.
      gdi32: Add a copy_rect helper function.
      gdi32: Add support for all of the ternary rops.
      gdi32: Remove an unneeded level of indentation.
      gdi32: Add an exception handler to catch bad pointers passed by an application.

Hwang YunSong (1):
      po: Updated Korean translation.

Jacek Caban (4):
      jscript: Don't copy more than needed in parse_identifier.
      mshtml: Wine Gecko 1.3 release.
      oleaut32: Correctly test VARIANT_BOOL value in VarCat.
      mshtml: Get rid of no longer useful get_nsdoc_window helper.

Jörg Höhle (5):
      kernel32/tests: WaitForMultipleObjects returns lowest signaled handle first.
      winealsa.drv: Fix AudioRenderClient write pointer calculation.
      wineoss.drv: Fix AudioRenderClient write pointer calculation.
      mmdevapi: After GetBuffer, refuse Reset, but Start/Stop is ok.
      winealsa: Pulse knows handle_underrun only since 2010-07-09.

Louis Lenders (1):
      shell32: Define icon resource 319.

Lucas Fialho Zawacki (6):
      dinput: Common implementation of BuildActionMap for keyboard and mouse.
      dinput: Common implementation for joystick, keyboard and mouse SetActionMap.
      dinput: In BuildActionMap, don't assign objects to actions mapped by an user.
      dinput: Free previous action map in SetActionMap.
      dinput: Proper conversion of username parameters for Set and BuildActionMap.
      dinput: Added ConfigureDevices A to W crosscall.

Marcus Meissner (4):
      net: LoadStringW incorrect size bytes vs characters.
      d3dx9_36: Fixed memset of a -2 32bit value (Coverity).
      wineoss.drv: Print strerror of errno, not of -1 (Coverity).
      oleaut32: Fixed buffer size to MBtoWC.

Mariusz Pluciński (1):
      shell32: Replace call of RegDeleteKeyW by SHDeleteKeyW.

Matteo Bruni (5):
      wined3d: Make context_acquire() unconditional in a bunch of places.
      wined3d: Pass around the context instead of gl_info.
      wined3d: Store currently active texture in the wined3d context.
      wined3d: Fetch currently active texture unit from the wined3d_context.
      wined3d: Don't change active texture to 0.

Michael Stefaniuc (22):
      qcap: COM cleanup in capturegraph.c.
      dxdiagn: COM cleanup for the IDxDiagProvider iface.
      dxdiagn: COM cleanup for the IDxDiagContainer iface.
      gameux: COM cleanup in gameexplorer.c.
      gameux: COM cleanup in gamestatistics.c.
      amstream: COM cleanup for the IMediaStreamFilter iface.
      amstream: Avoid a forward declaration of the IMediaStreamFilter vtbl.
      amstream: Basic COM cleanup for the IDirectDrawMediaStream iface.
      amstream: Avoid the forward declaration of the DirectDrawMediaStream_Vtbl.
      amstream: Get rid of the explicit implementation of IMediaStream.
      amstream: Use CoTaskMemRealloc instead of alloc+copy.
      mscoree: COM cleanup for the ICLRRuntimeInfo iface.
      wined3d: Sync a function prototype with its definition.
      ole32: COM cleanup in antimoniker.c.
      ole32: COM cleanup in classmoniker.c.
      dsound: Remove pointless AddRef followed by a Release.
      dsound/tests: IDirectSoundBuffer and IDirectSoundBuffer8 use the same implementation.
      dsound: Basic COM cleanup for the IDirectSoundBuffer8 iface.
      dsound: Kill SecondaryBufferImpl with extreme prejudice.
      ole32: COM cleanup in itemmoniker.c.
      ole32: Cleanup ItemMonikerImpl_QueryInterface().
      dsound: Fix refcounting for the secondary buffer object.

Michał Ziętek (7):
      wscript: Implemented Host_get_Arguments.
      wscript: Implemented Arguments2_Item.
      wscript: Implemented Arguments2_Count.
      wscript: Implemented Arguments2_get_length.
      wscript: Implemented Host_get_Interactive.
      wscript: Implemented Host_put_Interactive.
      wscript: Implemented Host_get_Application.

Nikolay Sivov (24):
      comctl32/treeview: Set edit box text before notification and keep it after.
      advapi32/tests: Fix invalid read in test.
      ntdll: Stub TokenSessionId for query call.
      oleaut32: Remove some useless comments and initializers.
      oleaut32: Clean QueryInterface() method, turn impl. calls to interface calls.
      oleaut32: Get rid of duplicated condition check.
      oleaut32/tests: Clean result value checks.
      oleaut32: FONTDESC size field value is not important for OleCreateFontIndirect.
      oleaut32: Use strdupW to duplicate strings.
      oleaut32: Use type names and sizeof() instead of hardcoded values for save/load methods.
      msxml3/mxnamespace: Add IMXNamespaceManager stub.
      msxml3/mxnamespace: Stub IVBMXNamespaceManager and added some tests.
      msxml3/mxnamespace: Implement declarePrefix() and getDeclaredPrefix().
      msxml3/mxnamespace: Implemented getURI().
      msxml3/mxnamespace: Support prefix override mode.
      ntdll: While requesting TokenGroups calculate required user buffer size in server.
      kernel32/nls: Added placeholder for LOCALE_SNATIVEDISPLAYNAME, header updated with new locale entries.
      msxml3: Implement put_version() for MXWriter.
      msxml3: Make version dependency checks more flexible, move CLSID checks to factory creation.
      msxml3: Store class version for MXWriter instance.
      msxml3: Fix parameter validation for startElement() for MXXMLWriter60.
      msxml3: Fix parameter validation for endElement().
      msxml3: Fix attributes formatting.
      msxml3/tests: Tests for default properties values.

Octavian Voicu (3):
      msxml3/tests: Prevent crash in saxreader tests.
      ieframe/tests: Skip rest of tests if CoCreateInstance failed.
      oleaut32: Fix leak in typelib marshaler when invoking IDispatch methods.

Owen Rudge (1):
      comctl32: Fix incorrect use of border metrics.

Per Johansson (1):
      winemenubuilder: Use start.exe to open URLs to respect URL handlers in registry.

Piotr Caban (22):
      include: Added IHTMLAttributeCollection definition.
      mshtml: Added nsIDOMNamedNodeMap interface.
      mshtml: DeleteMemberByDispID should return E_NOTIMPL.
      mshtml: Populate dynamic properties table in get_dynamic_data.
      mshtml: Make sure dynamic properties are initialized in Dispatch functions.
      mshtml/tests: Added dynamic properties accessing tests.
      mshtml: Remove no longer needed get_attr_from_nselem function.
      msvcp90: Added basic_streambuf<char> class stub.
      msvcp: Sync spec files.
      msvcp90: Added basic_ostream<char> class stub.
      msvcp: Sync spec files.
      msvcp90: Added locale::id class implementation.
      msvcp90: Added locale::facet class implementation.
      msvcp90: Added basic_streambuf<char>::{ctor, dtor} implementation.
      msvcp90: Added basic_streambuf<char> buffer accessing functions implementation.
      msvcp90: Added basic_streambuf<char>::{Lock, Unlock} implementation.
      mshtml: Added IHTMLAttributeCollection stub.
      mshtml: Added IHTMLAttributeCollection2 stub.
      mshtml: Added IHTMLAttributeCollection3 stub.
      mshtml: Added HTMLAttributeCollection_get_length implementation.
      mshtml: Added HTMLAttributeCollection_item implementation.
      mshtml: Added HTMLDOMAttribute_get_nodeName implementation.

Ričardas Barkauskas (6):
      ddraw/tests: Properly release no longer used interfaces.
      ddraw: Don't allow setting palette on non root surfaces.
      ddraw: Do not AddRef IDirectDraw7 iface in CreateSurface helper.
      ddraw: Print IDirectDrawGammaControl interface reference count for easier debugging.
      wined3d: Avoid dereferencing null pointer in context_apply_clear_state when calling context_generate_rt_mask_from_surface.
      ddraw: Do not create implicit depth buffer.

Robert Millan (1):
      configure: Add GNU/kFreeBSD detection.

Scott Ritchie (1):
      shlwapi/tests: Fix an errant comment.

Stefan Dösinger (5):
      wined3d: Invalidate streamsrc, vdecl and indexbuffer after strided draws.
      wined3d: Call glFlush after updating a buffer.
      ddraw: Correct WINED3DFMT_D24_UNORM_S8_UINT.
      wined3d: Disable WINED3DFMT_S1_UINT_D15_UNORM and WINED3DFMT_S4X4_UINT_D24_UNORM.
      ddraw: Correct WINED3DFMT_X8D24_UNORM.

Stefan Leichter (1):
      setupapi: Add pSetupFree|Malloc|Realloc to spec file and forward them.

Thomas Faber (2):
      riched20: Fix uninitialized variable usage.
      user32/tests: Fix build with MSVC.

Thomas Mullaly (6):
      msxml3/tests: Added IStream tests for IMXWriter.
      msxml3/tests: Added more IMXWriter tests.
      msxml3: Added IStream support to IMXWriter.
      include: Added declarations for IInternetSecurityManagerEx and IInternetSecurityManagerEx2.
      urlmon: Added stubs for IInternetSecurityManagerEx{2}.
      urlmon/tests: Added tests for MapUrlToZoneEx2.

Yaron Shahrabani (1):
      po: Hebrew translation update.

--
Alexandre Julliard
julliard@winehq.org
