The Wine development release 1.3.35 is now available.

What's new in this release (see below for details):
  - Triangular gradients and cosmetic wide pens support in the DIB engine.
  - All Wine dialogs can now be translated through po files.
  - Many more scripts added to UniScribe.
  - JScript using bytecode throughout now.
  - Several MSXML improvements.
  - Various bug fixes.

The source is available from the following locations:

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

   6767  failure enumerating interfaces on NetBSD
  11217  X Error of failed request:  BadAlloc
  11490  Speed Commander 12 reports "Can't Initialize Scripting Environment" error on startup
  12829  Viper Racing crashes with an EXCEPTION_ACCESS_VIOLATION error.
  14419  Icons outputted to textbox do not render.
  14535  msxml4 needed to get a Network connection for www.iplabs.de/ Fujiprint based photo print ordering software
  15047  Tex Murphy Overseer installs fine, but will not run
  15113  WinUAE DirectDraw graphics overwrite windows which are in front of it
  15128  JSmooth does not run with WinVer set to 'Windows XP'
  15402  Application fails to restore window decorations after exiting fullscreen mode
  16668  Commandos 3: sniper scope incorrectly rendered
  16669  Service does not start second time.
  16710  aTube Catcher in not showing the icons
  17512  Microsoft Virtual PC 2007 SP1 installer fails during CA_InstallVMMDriver (cash in LdrProcessRelocationBlock)
  19249  Notepad++ default save dialog is 'Save', not 'Save as' (appinstall)
  19467  Icon text fields have incorrect placement and text input field has garbage only while editing
  20924  program icons either missing completely or having black background
  21313  Sony Acid Xpress 7.0: Fails to install the required files
  21417  opening large files in excel 2000 takes very long
  21455  Steam installer: target path cannot be changed
  21729  missing transparent on VB6 usercontrols
  21816  H&R Block At Home 2009 Deluxe updater is broken
  22778  PlayOnline viewer's window is not correctly updated
  22848  Notepad++: Ctrl+tab doesn't work properly
  23561  When using custom mouse pointer, previous pointer remains frozen on screen
  23580  Full-screen option not available in several Boulder Dash games
  23923  pygame: game pieces aren't connected as they should be
  24615  Can't open or save assembly files in SolidWorks
  24921  mail.ru agent 5.7: X Error of failed request:  BadAlloc
  25476  MS Office Pro 2010 Trial: setup.exe is started when starting installed apps
  25494  Office Pro 2010 Trial: Word, Excel, and Powerpoint cannot open or save OOXML (docx, xlsx, pptx) files
  25534  Bimoid submenu's shows over menu.
  26844  Neon Wars: jerky animations and mouse movement
  27118  Dead Space 2 (Steam) activation.exe only crashes and does not activate the game
  27281  crash while install ICBC_FT_UShield2_Install.exe ( unimplemented function msvcp60.dll.??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z )
  27367  widl: gcc warns about pointer mismatch when calling pfnFree
  27371  crash while install 360chrome browser
  27695  Need for speed underground 1 DEMO: Keys Num_Lock and Pause are swapped
  27730  Arcanum hangs on exit
  27755  Can't log in with yahoo! messenger 11
  27922  iexplore crashes on windows.microsoft.com
  28047  IAudioClock_GetPosition must not depend on buffering (ALSA/Pulse)
  28204  Starfleet Command 3: Fails to load main menu
  28609  msi/install.ok slightly flaky
  28986  Quicken: crashes when opening investment account register
  28994  AOL 9.0VR: wmp9 sub-installer crashes while registering drmclien.dll
  29127  Typing of the Dead demo crashes on launch
  29142  Sins of a Solar Empire Trinity causes GLXBadDrawable
  29161  ZMud fails to run
  29162  Gens 11b rerecording: fails to initialize drawing surface
  29179  SAMO-Touragent application,  does not launch due to exception stack overflow
  29180  WS_CHILD dialog might want WS_CAPTION
  29204  the dib text rendering breaks text in d3d
  29213  DDR=gdi leads to a crash
  29216  Sacred Gold v2.28 hangs on exit (ddr=opengl)
  29233  FoxitReader 5.1 crashes when a pdf is loaded
  29235  Worms Armageddon: frontend flickers
  29239  Age of Empires 1 & 2 rendering broken with OpenGL renderer (DDR=opengl)
  29260  Wrong scrollbar background in iexplore
  29262  Creating windows in threads may deadlock
  29263  'Reinstall' Dialog in Java Runtime Environment Installer Thinks You Always Say "No"
  29271  Battle For Middle Earth hangs on launch
  29280  todolist crashes after using LVM_GETHEADER
  29283  AntiVir 9 configuration wizard shows text in a separate dialog
  29285  Arcanum: screen resolution stays at 800x600 after exiting the game
  29296  Heroes 2 Gold demo crashes on startup
  29297  Cold Fear: graphical glitches when shadows enabled
  29300  PlayOnline viewer crashes on startup (seems functional)
  29302  AntiVir 9 shows some corrupted icons
  29306  Telltale's games launcher unusable (can't click on buttons)
  29307  Word 2010 cannot open specific docx file with builtin msxml6
  29308  Word 2010 complains about Normal.dotm on start with builtin msxml6
  29314  VLC menu bar text is invisible
  29317  QQ2011 installer crash at the end of installing
  29321  Internet Explorer 8 shows upside-down previews on the quick tabs screen
  29333  Raidcall doesn't connect
  29343  Bloxx It's launcher is missing some background visuals
  29353  pwsafe (3.xx) crashes
  29356  Internet Explorer 8's content advisor shows small icons with a black background

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

Changes since 1.3.34:

Adam Martinson (1):
      ntdll: Properly set flags in NtCreateNamedPipe().

Akihiro Sagawa (2):
      po: Update Japanese translation.
      cmd: Improve the message when the volume has no label.

Alex Henrie (4):
      user32: If a dialog has no tab-accessible controls, set focus to first control (with tests).
      comdlg32: Correct title of "Save As" dialog.
      po: Update Catalan translation.
      comdlg32: Widen buffer to accomodate Catalan translation.

Alexandre Julliard (75):
      gdi32: Implement triangular gradients in the DIB engine.
      gdi32/tests: Add more gradient tests.
      gdi32: Use dithering also for 1-bpp gradients.
      gdi32: Add more parameter checks in GdiGradientFill.
      gdi32: Use the DIB engine and PutImage for the null driver triangular gradient implementation.
      winex11: Always refresh the picture clipping when we have an additional clip region.
      comctl32: Convert dialogs to po files.
      shell32: Convert dialogs to po files.
      user32: Convert dialogs to po files.
      gdi32: Add a null driver implementation for Polyline and Polygon.
      wineps: Fall through to the null driver for Polyline and Polygon.
      winex11: Use an X11 error handler to catch BadMatch errors from XGetImage.
      netapi32: Simplify the smbpasswd invocation to avoid compiler warnings.
      gdi32: Add a helper function to clip a rectangle to the DC visible rect.
      gdi32: Maintain a region inside gdi32 to keep track of the total visible region.
      gdi32: Pass the total visible region in the SetDeviceClipping driver entry point.
      winex11: Store the visible region handle directly instead of making a copy.
      winex11: Allow the visible region to be zero when not clipping.
      cryptui: Convert dialogs to po files.
      comdlg32: Convert dialogs to po files.
      gdi32: Make sure DCs are fully zero-initialized.
      gdi32: Only create the DC visible region when necessary.
      gdi32: Only store a total visible region when it's a combination of other regions.
      gdi32: Don't store the metaclip region, recompute it as needed.
      gdi32: Rename the CLIPPING_UpdateGCRegion function.
      winex11: Don't call get_xrender_picture inside the X11 lock.
      gdi32: Add missing check for empty visible rects in the non-stretching case.
      winex11: Add some sanity checks on bitmap formats before creating a pixmap.
      gdi32: Use the convert_bits helper function in SetDIBits and SetDIBitsToDevice.
      gdi32: Use PutImage directly to set the initial bitmap bits.
      gdi32: Don't make a copy of the DIB color table when selecting it into a DC.
      gdi32: Add a helper to build a color table from the DIB_PAL_COLORS bitmap info.
      gdi32: Always allocate a full-size color table when creating a DIB section.
      gdi32: Fix handling of DIB_PAL_COLORS in the various DIB functions.
      gdi32: Remove the nb_colors fields in the bitmap object, we always allocate a full size color table.
      gdi32/tests: Add tests for DIB_PAL_COLORS and DIB palettes with missing entries.
      gdi32: Always use biClrUsed for the number of colors of internal BITMAPINFO structures.
      gdi32: Make sure that biSizeImage always contains the correct size in internal BITMAPINFO structures.
      gdi32: Simplify computation of the DIB header size for internal BITMAPINFO structures.
      gdi32/tests: Fix some test failures on Windows.
      gdi32: GetCharABCWidthsFloatW must succeed with non-TrueType fonts.
      gdi32: Store the default color tables as static data.
      gdi32: Use the default DIB color table to create system and halftone palettes.
      gdi32: Add a flag to request a default color table from init_dib_info.
      gdi32: Select the pattern brush only when first used.
      gdi32: Don't create a default color table for pattern brushes, use the DC colors instead.
      gdi32/tests: Add tests for 1-bpp DDB pattern brushes.
      gdi32: Pass the correct depth to PutImage for SetBitmapBits on a DIB.
      gdi32: Remove support for private color maps.
      gdi32: init_dib_info() can no longer fail, and no longer requires freeing.
      gdi32: Implement GetNearestColor in the DIB driver.
      gdi32: Remove some color table size checks, we use full-size color tables now.
      gdi32: Implement GetPixel in the null driver using GetImage.
      winex11: Get rid of the GetPixel implementation, use the null driver fallback instead.
      gdi32/tests: Fix some test failures on old Windows versions.
      ntdll: Make an error message a proper ERR.
      widl: Zero-initialize [out] structures and unions that contain pointers.
      gdi32/tests: Add some tests for behavior of 32-bit DDBs.
      winex11: Add missing initialization of pattern brush style.
      wine.inf: Also create iexplorer.exe in the system directory for registration.
      setupapi: Specify the correct binary file name when registering an executable.
      kernel32: Don't run a nonexistent builtin from CreateProcess when filename is not specified.
      comctl32: Don't try to mask out the image for palette-based bitmaps.
      server: Optionally return the global key state when queueing a hardware message.
      user32: Cache the global key state to avoid performance issues in applications that poll constantly.
      user32: Always use the default alignment when displaying submenu popups.
      winex11: Update MWM hints when the window size changes.
      wineps: Inherit the device mode from the source DC when creating a compatible DC.
      gdi32/tests: Add tests for device capabilities on memory DCs.
      comctl32/tests: Add some more tests for ImageList_Write.
      comctl32: Use DrawIconEx to copy icon bits and use the correct background color.
      comctl32: Use GetDIBits to retrieve the default color map for an imagelist DIB section.
      user32: Don't try to alpha blend icons on low color bitmaps.
      oleaut32: Fix IPicture::SelectPicture to not try to select a bitmap into two DCs at the same time.
      comctl32/tests: Fix a test failure on older Windows.

Andrew Eikum (2):
      dsound: Validate format in primary buffer's SetFormat().
      wineoss.drv: Don't set volume in IAudioClient::Initialize.

André Hentschel (3):
      winecfg: Fill in the Service Pack major version for win2008.
      winecfg: Bump NT 3.51 to Service Pack 5.
      po: Update German translation.

Aric Stewart (36):
      usp10: Correct issues with LTR logclust indexing after Multiple substitution.
      user32: Protect against NULL ssa to prevent crashes in old native usp10.
      usp10: Initialize the GSUB table before doing any contextual shaping.
      usp10: Use GDEF in baseIndic GlyphProp processing.
      usp10: The top logclust value may be different than the number of chars.
      usp10: Use UpdateClusters in DecomposeVowels.
      usp10: Sinhala, while behaving like a base Indic, does not set GlyphProps based on indic syllable.
      usp10: Handle Halant, ZWJ and ZWNJ in ShapeCharGlyphProp_BaseIndic.
      usp10: Unicode does not compose the Gurmukhi letter SHA.
      usp10: Handle dangling joiners when processing Indic GlyphProps.
      usp10: Some Indic scripts, Sinhala, want GDEF to set glyph properties.
      usp10: Add Myanmar script.
      usp10: Resync script_props table.
      usp10/tests: Check broken value for script tag as well.
      usp10: Add script Tai Le.
      usp10: Add New Tai Lue script.
      usp10: Add Khmer script.
      usp10: Add CKJ Han and Ideographic scripts.
      usp10: Add Bopomofo script.
      usp10: Add Kana script.
      usp10: Add Hangul script.
      usp10: Add Yi script.
      usp10: Add Ethiopic script.
      usp10: Allow for multiple broken item counts.
      usp10: Add Mongolian script.
      usp10: Add Tifinagh script.
      usp10: Add N'Ko script.
      usp10: Add Vai script.
      usp10: Add Cherokee script.
      usp10: Add Canadian Aboriginal Syllabics script.
      usp10: Add Ogham script.
      usp10: Add Runic Script.
      usp10: Add Braille script.
      usp10: Add Private Use Area and Surrogates Area from Unicode Chapter 16.
      usp10: Add Spacing Modifier Letters to the Latin script block.
      usp10: Do not try to fallback if no fallback font is specified.

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

Bruno Jesus (1):
      ws2_32: Fix a function name comment.

Dmitry Timoshkov (8):
      user32: Add more window style tests, make them pass under Wine.
      user32: Add the tests for dialog window styles, make them pass under Wine.
      user32: Strip WS_CAPTION|WS_SYSMENU when a dialog has DS_CONTROL style set.
      user32: Strip WS_CAPTION|WS_SYSMENU when a dialog has DS_CONTROL style set.
      kernel32: Add the tests for various combinations of CreateFileMapping/MapViewOfFile protections.
      ntdll: Setting WRITECOPY protection on a memory-mapped file is allowed.
      kernel32: Add a bunch of VirtualProtect tests on an image section.
      ntdll: Replace WRITE by WRITECOPY protection on an image section as Windows does.

Eric Pouech (1):
      d3d: Fixed a couple of warnings for 64bit targets.

Francois Gouget (42):
      dsound: Remove mmErr(). It is not used anymore.
      gdi32: Make init_dib_info() static.
      jscript: Make interp_expression_eval() static.
      mscoree: Make CorDebugProcess_Create() static.
      cmd: Use FormatMessage() for better internationalization support.
      include: Add a couple of missing include directives in dshow.h.
      include: in6addr.h does not depend on winsock's u_xxx types.
      include: Eliminate redundancy between winsock.h and inaddr.h.
      iphlpapi: Remove a few redundant include directives.
      include: Add the missing inaddr.h and in6addr.h include directives.
      include: Add a missing wincrypt.h include directive to mprapi.h.
      userenv: Add a missing include directive to userenv.h.
      include: Protect mstcpip.h against multiple inclusion.
      include: Include ipifcons.h from ifdef.h.
      include: Move some definitions from iptypes.h to nldef.h.
      include: Split iprtrmib.h into multiple mib.h files.
      include: Define the MIB_IF_OPER_STATUS_XXX constants using an enumeration in ipifcons.h.
      include: Add the Dll(Un)RegisterServer() prototypes to olectl.h.
      include: Remove unneeded extern "C" directives.
      include: Add extern "C" directives where needed.
      include: Update the nldef.h and *mib.h headers.
      include: Add a couple of missing include directives in windows.h.
      configure: Use errno.h instead of the non-standard sys/errno.h header.
      include: Add missing include directives.
      include: Include windef.h and packing directives in rpcasync.h when needed.
      include: shldisp.idl should only import ocidl.idl.
      view: Remove unneeded RC files.
      taskmgr: Remove unneeded and untranslatable widget labels.
      windowscodecs: Avoid hardcoding the Unicode string literal lengths.
      riched20: Avoid hardcoding the Unicode string literal lengths.
      quartz: Avoid hardcoding the Unicode string literal lengths.
      ntdll: Avoid hardcoding the Unicode string literal lengths.
      krnl386.exe16: Avoid hardcoding the Unicode string literal lengths.
      kernel32: Avoid hardcoding the Unicode string literal lengths.
      gdi32: Avoid hardcoding the Unicode string literal lengths.
      ole32: Avoid hardcoding the Unicode string literal lengths.
      mlang/tests: Avoid hardcoding the Unicode string literal lengths.
      attrib: Avoid hardcoding the Unicode string literal lengths.
      fusion: Avoid hardcoding the Unicode string literal lengths.
      strmbase: Avoid hardcoding the Unicode string literal lengths.
      setupapi: Avoid hardcoding the Unicode string literal lengths.
      cmd: Avoid hardcoding the Unicode string literal lengths.

Frédéric Delanoy (10):
      dinput: Clarify a translatable string.
      po: Update French translation.
      po: Use non-breaking space before double punctuation in the French translation.
      cmd: Avoid duplication of commonly used strings.
      taskmgr: Avoid dead assignment (Clang).
      cmd: Avoid dead assignment (Clang).
      po: Update French translation.
      msvfw32: Use appropriate abbreviation for seconds.
      po: Update French translation.
      po: Update French translation.

Hans Leidekker (13):
      user32: Add stub implementations of MessageBoxTimeoutA/W.
      msi: Make sure to keep a reference to custom action data until the actions are finished.
      msi/tests: Try harder to remove a shortcut file.
      winhttp: Avoid a null pointer dereference (clang).
      winhttp: Remove some dead assignments (clang).
      po: Update Dutch translation.
      msi: Format the value name from the RegLocator table.
      msi: Move some traces from implementations to entry points.
      msi: Support all install contexts in MsiReinstallFeatureW.
      msi: Don't set the Installed property in MsiReinstallFeatureW.
      msi: Don't set the LOGVERBOSE property in MsiReinstallFeatureW.
      msi: Pass REINSTALL and REINSTALLMODE properties on the command line in MsiReinstallFeatureW.
      msi: Don't run the rollback script in reinstall mode.

Henri Verbeet (35):
      wined3d: Create the device state block when the device is created.
      wined3d: Only recreate GL contexts when we're using GL for rendering in wined3d_device_reset().
      wined3d: Only unload the surface when we're using GL for rendering in updateSurfaceDesc().
      wined3d: Get rid of WINED3DDEVINFO_VERTEXSTATS.
      wined3d: Get rid of WINED3DDEVINFO_VCACHE.
      wined3d: Don't declare more varyings than required by the shader model.
      wined3d: Disable client storage in upload_palette().
      ddraw: Don't enumerate surfaces without references.
      wined3d: Get rid of the WINED3DLOCKED_RECT typedef.
      wined3d: Get rid of the WINED3DLOCKED_BOX typedef.
      wined3d: Unbind stateblock resources in wined3d_device_uninit_3d().
      ddraw: Destroy the swapchain in the DllMain() cleanup handler.
      ddraw: Just read the actual reference counts in DestroyCallback().
      wined3d: Get rid of the WINED3DBOX typedef.
      wined3d: Get rid of the WineDirect3DStridedData typedef.
      wined3d: Read the PBO back into the DIB section if we have one in surface_remove_pbo().
      wined3d: Properly check if a surface has a DIB section in gdi_surface_map().
      wined3d: Avoid clearing the current wined3d context in WineD3D_CreateFakeGLContext().
      wined3d: Get rid of the WineDirect3DVertexStridedData typedef.
      wined3d: Get rid of the WINEDDCOLORKEY typedef.
      wined3d: The VertexAttrib*h[v] calls in NV_half_float depend on NV_vertex_program.
      wined3d: Print the GL_RENDERER string when no "card selector" is available in wined3d_guess_card().
      wined3d: Introduce a helper function for checking colors against a color key.
      wined3d: Get rid of the WINED3DVSHADERCAPS2_0 typedef.
      wined3d: Get rid of the WINED3DPSHADERCAPS2_0 typedef.
      ddraw: Destroy the swapchain after the D3D device in DllMain().
      d3d10: Add a short description to skip_dword_unknown().
      wined3d: Trace all swapchain_desc fields in wined3d_device_reset().
      wined3d: Get rid of the WINED3DLIGHTTYPE typedef.
      wined3d: Get rid of the WINED3DPRIMITIVETYPE typedef.
      ddraw: Move clipper handling to ddraw.
      ddraw: Add support for clipped blits.
      wined3d: Use the correct source pitch and byte_count for uploading converted surfaces.
      wined3d: Get rid of the WINEDDCAPS typedef.
      wined3d: Get rid of the WINED3DDEVTYPE typedef.

Huw Davies (2):
      gdi32: Add support for wide cosmetic pens.
      gdi32/tests: Add some tests for wide pens.

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

Jacek Caban (60):
      jscript: Use bytecode for assignment to identifier.
      jscript: Use bytecode for assigning to array expression.
      jscript: Use bytecode for assignment to member expression.
      jscript: Use bytecode for invalid assignments.
      jscript: Use bytecode for '+=' expression implementation.
      jscript: Use bytecode for '-=' expression implementation.
      mshtml: Return wrapped ActiveX object's interface from object element's QueryInterface.
      mshtml: Added tests for returning ActiveX object's interfaces from object element's QueryInterface.
      jscript: Use bytecode for '*=' expression implementation.
      jscript: Use bytecode for '/=' expression implementation.
      jscript: Use bytecode for '%=' expression implementation.
      jscript: Added bytecode version of member expression.
      jscript: Use bytecode for '|=' expression.
      jscript: Use bytecode for '^=' expression implementation.
      mshtml: Don't use WINAPI for assembly functions to avoid linker warnings on mingw.
      mshtml: Added support for navigating to _self target.
      jscript: Use bytecode for calls on identifier and member expressions.
      jscript: Use bytecode for all call expressions.
      jscript: Use binary_expression_t instead of array_expression_t.
      jscript: Added bytecode version of array expression.
      jscript: Use bytecode for post-increment expression.
      jscript: Use bytecode for post-decrement expression.
      scrrun: Moved script extensions registration to scrrun.dll.
      appwiz.cpl: Run winebrowser directly instead of using ShellExecute.
      jscript: Use bytecode for pre-increment expression implementation.
      jscript: Use bytecode for pre-decrement implementation.
      jscript: Use bytecode for array literal expressions.
      jscript: Use bytecode for binary and implementation.
      jscript: Use bytecode for '&=' expression implementation.
      jscript: Use bytecode for '>>' expression.
      jscript: Use bytecode for '>>=' expression.
      wininet: Use test.winehq.org instead of crossover.codeweavers.com in test_async_HttpSendRequestEx.
      wininet: Properly handle closed connection in HTTP_HttpEndRequestW.
      wininet: Added more connection failure tests.
      winebrowser: Use IUri API for URL-related logic.
      jscript: Fixed memory leaks.
      jscript: Use bytecode for '>>>' expression implementation.
      jscript: Use bytecode for '>>>=' expression implementation.
      jscript: Use bytecode for '<<' expression implementation.
      jscript: Use bytecode for '<<=' expression implementation.
      jscript: Don't use EXPR_NEWREF in for_statement_event.
      jscript: Don't use EXPR_NEWREF in forin_statement_event.
      jscript: Use bytecode for instanceof implementation.
      jscript: Properly handle NULL IDispatch in stack_pop_object.
      jscript: Initialize VARIANT before passing it to disp_propget.
      mshtml: Initialize VARIANT before passing it to variant_copy.
      jscript: Use bytecode for typeof expression implementation.
      htiframe.idl: Added ITargetFramePriv and ITargetFramePriv2 declarations.
      jscript: Use byte code for deleting identifier expressions.
      jscript: Added more deleting tests.
      jscript: Throw type error on invalid delete.
      jscript: Call expressions needling EXPR_NEWREF flag directly.
      jscript: Don't pass EXPR_NEWREF to name expression in array_expression_eval.
      jscript: Always use compiler for member, array and identifier expressions.
      jscript: Get rid of no longer needed EXPR_NEWREF flag.
      jscript: Use bytecode for function expression implementation.
      jscript: Use bytecode for object literal implementation.
      jscript: Get rid of no longer needed expression eval entry.
      jscript: Invoke bytecode directly from expr_eval.
      jscript: Return VARIANT directly from expr_eval.

Juan Lang (1):
      wintrust: Don't dereference a potentially NULL pointer.

Jörg Höhle (1):
      winealsa: Implement IAudioClock::GetPosition() using snd_pcm_delay.

Kusanagi Kouichi (3):
      gdi32/tests: Add tests for vertical font.
      gdi32: Don't use preferred family name.
      gdi32: Don't remove leading '@' from face name.

Luca Bennati (5):
      po: Update Italian translation.
      po: Update Italian translation.
      po: Update Italian translation.
      po: Update Italian translation.
      po: Update Italian translation.

Marcus Meissner (2):
      ole32: Handle VT_BLOB in PropertyStorage_ReadProperty.
      ole32: Output more information in OleCreateStaticFromData.

Matteo Bruni (2):
      wined3d: Fix some flag checks.
      wined3d: Ignore invalid texture transform flags.

Michael Stefaniuc (1):
      cmdlgtst: Remove obsolete and unused application.

Nikolay Sivov (26):
      comctl32/listview: Create header when LVS_EX_GRIDLINES style is set.
      msxml3: Added IDispatchEx support for IMXWriter.
      msxml3: Attribute name could be qualified.
      msxml3: Added IDispatchEx support for IXSLTemplate.
      msxml3: Added IDispatchEx for IXSLProcessor.
      comctl32/listview: Create header when LVS_EX_FULLROWSELECT is requested.
      msxml3: Use libxml2 buffer support through helpers.
      msxml3: Write document prolog separately.
      msxml3: Properly handle writer output in a form of BSTR.
      msxml3: Escape '<','&','"' and '>' in attribute value.
      msxml3: Trace parameters in stub methods.
      msxml3: Accept disabled on load validation.
      msxml3: Schema cache COM cleanup.
      msxml3: Added IDispatchEx support for IXMLDOMSchemaCollection2.
      msxml3: Use IXMLDOMDocument3 as a latest interface version.
      msxml3: IDispatchEx support for MXNamespaceManager.
      po: Update Russian translation.
      ole32: COM cleanup of IStream based on HGLOBAL.
      ole32: Simplify stream creation, remove redundant comments.
      msxml3/tests: Test switching encoding after document is started already.
      msxml3: Implemented get_responseStream().
      msxml3: Added IXMLDOMParseError2 support.
      msxml3: Initialize VARIANT before passing it to VariantCopy.
      msxml3: Get rid of libxml2 output buffer implementation.
      msxml3: Don't use libxml2 encoding helpers.
      msxml3: Remove redundant type specifiers.

Pierre Schweitzer (6):
      kernel32: Fix memory leak.
      usp10: Fix memory leaks.
      msctf: Fix memory leaks.
      msacm32: Fix buffer double free.
      wineps.drv: Fix memory leak.
      usp10: Fix memory leak.

Piotr Caban (38):
      msvcrt: Added _get_current_locale implementation.
      msvcrt: Fix lc_collate_cp initialization.
      include: Update msvcrt/locale.h.
      msvcp90: Added _Locinfo constructor implementation.
      msvcp90: Added _Locinfo::_Addcats partial implementation.
      msvcp90: Added _Getcoll implementation.
      msvcp90: Added _Getctype implementation.
      msvcrt: Initialize lc_time_curr inside create_locale.
      msvcrt: Added _Gettnames implementation.
      msvcrt: Added _Getdays implementation.
      msvcrt: Added _Getmonths implementation.
      msvcrt/tests: Added _Gettnames tests.
      msvcp90: Added _Getcvt implementation.
      msvcp90: Added _Locinfo::_Getfalse and _Gettrue implementation.
      msvcp90: Added _Locinfo::_Getlconv implementation.
      msvcp90: Added _Locinfo::_Getname implementation.
      msvcp90: Added _Locinfo::_Getdays implementation.
      msvcp90: Added _Locinfo::_Getmonths implementation.
      msvcp90: Added _Locinfo::_Gettnames implementation.
      services: Accept SERVICE_START_PENDING as valid service start status.
      services: Set result inside service_send_command.
      services: Fix SERVICE_STATUS initialization in svcctl_ControlService.
      services: Check process status to determine if service has terminated.
      services: Don't close control_pipe when SERVICE_CONTROL_STOP is sent.
      services: Move service cleanup code to separate function.
      services: Terminate service when its status is set to SERVICE_STOPPED.
      hlink: Fix leak in HlinkNavigateToStringReference.
      urlmon: Fixed trace message in URLMoniker_BindToObject function.
      urlmon: Added stub for 444 and 445 function.
      msvcp90: Removed __ASM_EXCEPTION_VTABLE macro.
      msvcp90: Fixed basic_streambuf<char> vtable.
      msvcp90: Added collate<char> class stub.
      msvcp90: Added collate<wchar_t> class stub.
      msvcp90: Added collate<unsigned short> class stub.
      msvcp90: Added ctype_base class implementation.
      msvcp90: Added ctype<char> class stub.
      msvcp90: Added ctype<wchar_t> class stub.
      msvcp90: Added ctype<unsigned short> class stub.

Rico Schüller (5):
      d3dx9: Implement D3DXSHAdd().
      d3dx9: Implement ID3DXBaseEffect::GetVector().
      d3dx9: Implement ID3DXBaseEffect::SetVector().
      d3dx9: Implement ID3DXBaseEffect::SetVectorArray().
      d3dx9: Implement ID3DXBaseEffect::SetValue().

Stefan Dösinger (11):
      ddraw: Size handling fixes for IDirect3DDevice::GetCaps.
      ddraw/tests: Add a IDirect3DDevice7 GetCaps test.
      ddraw/tests: Update a copyright line.
      wined3d: Remove fglrx GLSL constant quirks.
      wined3d: Remove the Apple NV_texture_shader quirk.
      ddraw/tests: Add a IDirect3DDevice2 GetCaps test.
      d3d9/tests: Test StrechRect between depth stencils with different sizes.
      d3d9/tests: Clarify a comment.
      ddraw/tests: Make the SetSurfaceDesc test ok messages consistent.
      ddraw: SetSurfaceDesc can set width, height and pitch under certain conditions.
      ddraw/tests: Extend the CreateSurface(NULL test), use own function.

Łukasz Wojniłowicz (1):
      po: Update Polish translation.

--
Alexandre Julliard
julliard@winehq.org
