The Wine development release 1.3.36 is now available.

What's new in this release (see below for details):
  - UDisks backend for the dynamic device support.
  - Polygons and geometric pens implemented in the DIB engine.
  - JScript now compiles entire functions.
  - Improved support for vertical fonts.
  - A few more scripts in UniScribe.
  - A bunch of ctype functions implemented in MSVCP.
  - Various bug fixes.

The source is available from the following locations:

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

   1129  bitmaps are not drawn in "Dink Smallwood"
   2116  Bible Companion stop at Unhandled Exception
   7150  Implement Arabic shaping
  11572  Adobe FrameMaker 8: Registration Dialog Blocks Execution
  11628  Gekkeiju Online: Bad audio sync/latency
  12633  Windows Media Player 10 crashes on "Add to Library" and exit
  13033  Homeworld2 v1.0 and demo v0.99 fails to launch (crash due to unimplemented function ntoskrnl.exe.IoGetDeviceProperty)
  13289  Multiple apps/games need ntoskrnl.exe IoGetCurrentProcess (Zeus maplestory, BASCOM AVR Demo)
  13448  AnyDVD - ElbyCDIO does not work (crash due to unimplemented function ntoskrnl.exe.IoUnregisterShutdownNotification)
  14052  CoreAudio driver broken
  15200  Dawn of War: Dark Crusade freezes at black screen
  15521  AnyDVD setup failure (crash due to unimplemented ntoskrnl.exe.KeSetEvent)
  15596  Windows Live Writer does not install (IPersistStreamInit support for IXMLDOMDocument needed)
  16499  Adobe Photoshop CS4 crashes upon using text input tool
  16513  locomotive like noise effects with Syberia 2
  17165  VT Trader 2 fails on startup with "Invalid property XML format" error
  18002  err:msi:call_script Could not find CLSID for Windows Script (VBScript)
  18402  NAVIGON Fresh failed to login
  18513  Autohotkey: ctrl/shift keys are nonfunctional under Controlsend
  18514  Wine botches keysends under autohotkey
  19034  Starship Titanic freezes during introduction sequence.
  19150  FlashDevelop 3.0.1 RTM crashes on startup
  20046  MacOSX race condition during 3D/GL initialisation
  20048  SIV (System Information Viewer) shows incorrect PCI device information
  21713  Add support for D-Bus provider "UDisks" (libhal.so is deprecated)
  22507  Half-life 1: missing PAUSE banner and looking through walls
  22794  Macrium Reflect 4.2 installer needs "HKLM\System\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}" registry key present
  23068  Free FLV Converter: Fails to display select language window
  23069  Free FLV Converter: Buttons have hatched appearance
  23900  Photoshop Elements 8 installer: “Next button” is grayed out
  24009  Tomb Raider 4: Wrong camera position (Unnecessary Viewport Scaling transformation)
  24520  Anno 1503 crashes on start
  24579  Steam windows move twice as far as they are moved
  25016  Thief 2 movies stopped working with recent wine update
  25249  Leonardo.exe from ENVI-met (microclimate model simulation software) crashes due to strict comctl32.151 (CreateMRUListLazyA) input parameter validation
  25414  Fleet Operations: mouse cursor not drawn during movement
  25660  Half-Life 1 Demo: "The selected D3D mode is not supported by your video card."
  25894  Free serial port monitor helper driver crashes due to unimplemented function ntoskrnl.exe.IoInitializeRemoveLockEx
  25906  DC Universe Online: launcher doesn't work
  25963  Dead Space 2 dvd installer fails to switch discs (no ready_media/msi_change_media for normal files)
  25981  Duty Calls: loader fails to resolve msvcm90.dll due to partial manifest data in WinSxS (empty assembly list for process default activation context)
  25982  Duty Calls: fails to run
  25986  Windws Live Mail 2009 crashes in actctx / msvcr80.dll
  26079  Dragon Age - Origins requires d3dx9_36 D3DXLoadMeshFromXW
  26239  GPU-Z: Crash when trying to save screenshot
  26340  MSXML3, HTTP POST fails
  26434  gamestop downloader has an infinite loop error in msxml3
  26605  Nitro PDF Reader: Menu is black rectangle
  26631  Plants vs Zombies installer crashes
  26798  Lego Star Wars 2: whole screen upside down
  26956  Mouse not released after moving or resizing any UI window
  27176  Metro 2033 mouse movement hangs application
  27251  Aliwangwang display ugly
  27265  system tray menu of POPO2011 missing display some text
  27536  XMLHTTP POST, server receive incorrect data
  27709  Implement cryptui.dll.CryptUIDlgSelectCertificateA
  28093  GetCurrentPadding must slowly decrease (MacOS)
  28690  ABBYY Finereader 10 needs msvcr90.dll._ultow_s
  28748  Two Worlds: missing audio
  28776  Korean text isn't shown
  28998  Total Annihilation crashes
  29026  Tree Icons have incorrect color
  29029  Selection of an Arabic text is not highlighted in Notepad
  29064  3DMark 2001 SE crashes on startup
  29087  hh crashes on non-chm files
  29144  skyrim freeze starting new game with ati/catalyst
  29157  energyXT crashes immediately
  29198  Unknown program crashes when minimized
  29234  Anarchy Online crashes every time you zone
  29241  Miranda IM crashes at startup, is unuseable
  29242  Biblio 7.34. Logo image disappears, returning: "err:menubuilder:convert_to_native_icon error 0x88982F81 initializing encoder"
  29350  Ground Control II: opaque water
  29373  Window decorations lost in virtual desktop mode
  29375  Collins Concise German Dictionary crashes on startup
  29393  Notepad enter / arrow keys are broken
  29394  d3drm:IDirect3DRMImpl_QueryInterface (0x12e528)->({4516ecc8-8f20-11d0-9b6d-0000c0781bc3},0x416c7c),not found
  29395  msxml3/domdoc tests hang indefinitely
  29398  foobar2000: attempting to edit advanced preferences text fields clears existing content
  29403  Tab control ignores TCN_SELCHANGING result
  29404  SketchUp 8 crashes under OpenSuse 12.1
  29407  Word 2003/2007/2010: lines in Equation Editor 3.0 objects are abnormally heavy
  29413  Acronis True Image 11 Home installer: custom action returns with invalid SQL syntax error (empty column name in select expression)
  29481  Free serial port monitor crashes due to unimplemented function setupapi.dll SetupDiGetClassBitmapIndex
  29482  Free serial port monitor crashes due to unimplemented function setupapi.dll SetupDiDrawMiniIcon

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

Changes since 1.3.35:

Akihiro Sagawa (1):
      gdi32: Avoid making a DBCS character in range.

Alexander E. Patrakov (1):
      dsound: Always resample buffers in mixer thread.

Alexandre Julliard (58):
      winex11: Hardcode the MWM hints for the desktop window.
      winex11: Only take managed popups into account when deciding whether to make a window managed.
      winex11: Remove DIB locking calls from all blitting entry points.
      gdi32: Remove support for deferring brush calls to X11, all brush types are supported now.
      regedit: Merge accelerators into the main resource file.
      winefile: Merge accelerators into the main resource file.
      wordpad: Merge accelerators into the main resource file.
      configure: Add a check for libdbus independent from the libhal check.
      mountmgr: Rename hal.c to dbus.c.
      mountmgr: Add dynamic devices support using UDisks.
      mountmgr: Require at least one of device or mount point to match when looking for an existing volume.
      winex11: Keep the device info around as long as XInput2 is active.
      winex11: Scale raw motion events according to their valuator range.
      msvcrt: Fix formatting of pointers in printf.
      gdi32: Fix handling of COLORREFs with illegal values for the high byte.
      gdi32: Recompute the brush masks on every use to support PALETTEINDEX colors.
      gdi32: Recompute the pen masks on every use to support PALETTEINDEX colors.
      gdi32: Recompute the background masks on every use to support PALETTEINDEX colors.
      gdi32: Recompute the foreground masks on every use to support PALETTEINDEX colors.
      gdi32: Add a common helper for computing pen and brush masks.
      gdi32: Always use proper RGB colors for monochrome DDB pattern brushes.
      gdi32/tests: Add tests for PALETTEINDEX colors.
      gdi32: Add a helper function to compute the list of rectangles to paint after clipping.
      gdi32: Use the get_clipped_rects helper in the text functions.
      gdi32: Use the get_clipped_rects helper in the pen functions.
      gdi32: Use the get_clipped_rects helper in the blitting functions.
      gdi32: Avoid making a copy of the device clipping region in the DIB driver.
      gdi32: Re-create the brush bits only when the ROP has really changed.
      gdi32: Compute the correct rectangle interior when using wide pens.
      gdi32: Add a helper function to add a rectangle to a region.
      gdi32: Add support for PS_INSIDEFRAME pens when drawing rectangles.
      gdi32: Pass the clip region to the brush_rect helper and add a similar helper for pens.
      gdi32: Fix the scaling of the width of cosmetic pens.
      gdi32: Wide cosmetic pens don't support dashes.
      gdi32: Extended pens are always transparent.
      gdi32: Fix handling of invalid pen styles.
      gdi32: Add support for 1-pixel wide geometric dashed pens.
      gdi32: Add support for PS_ALTERNATE pens.
      gdi32: Add support for 1-pixel wide PS_USERSTYLE pens.
      gdi32: Add support for updating a region from the pen backend functions instead of painting directly.
      gdi32: Implement returning a region for 1-pixel wide solid pen lines.
      gdi32: Implement returning a region for 1-pixel wide dashed pen lines.
      gdi32: Use a region to render geometric and wide pens in PolyPolyline.
      gdi32: Use a region to render geometric and wide pens in Rectangle.
      gdi32: Use a region to render geometric and wide pens in LineTo.
      gdi32: Implement PolyPolygon in the DIB driver.
      gdi32: Add helpers to paint a region with the brush or pen.
      gdi32: Add checks for invalid color usage values.
      gdi32/tests: Get rid of Win9x compatibility in the pen tests.
      gdi32: Add a structure to store all the extra information needed for a pattern brush.
      gdi32: Add sanity checks for brush hatch styles.
      gdi32: Store the pattern brush information for geometric pens.
      gdi32: Pass a brush_pattern structure to the SelectBrush entry point.
      gdi32: Pass a brush_pattern structure to the SelectPen entry point for brushed pens.
      gdi32: Define a structure to make the brush state independent from the physdev.
      gdi32: Implement brushed pens.
      gdi32: Don't bother computing interior regions when the brush is null.
      user32/tests: Remove a crashing test.

Alistair Leslie-Hughes (2):
      jscript: Don't double free IObjectWithSite interface.
      mmcndmgr: Register MMCVersionInfo Interface.

Andrew Eikum (1):
      winealsa.drv: Limit the data written to ALSA's buffer.

André Hentschel (15):
      po: Update German translation.
      secur32/tests: Fail on missing NTLM.
      po: Update German translation.
      include: Add CM_DRP_* and CM_CRP_* defines to cfgmgr32.h.
      msvcrt/tests: Fix two test messages.
      dsound: Use if(0) instead of #if 0 to make sure code still compiles.
      d3drm: Fix the order of the IDirect3DRM methods.
      d3drm: Add IDirect3DRMMeshBuilder2 interface.
      d3drm: Add IDirect3DRM2 interface.
      po: Update German translation.
      d3drm: Add IDirect3DRMMeshBuilder3 interface.
      d3drm: Add IDirect3DRM3 interface.
      comctl32: Also free pszHeaderTitle and pszHeaderSubTitle in DestroyPropertySheetPage.
      cscript: Add forwarder to wscript.
      po: Update German translation.

Aric Stewart (19):
      usp10: N'Ko uses the Ebrima font as a fallback.
      usp10: Code for the cmap format 12 table for unicode code points beyond the BMP.
      usp10: Decode surrogate pairs in get_char_script and handle ranges beyond the BMP.
      usp10: Handle surrogate pairs when shaping.
      usp10: Add Deseret script.
      usp10: Add Osmanya script.
      usp10: Add Mathematical Alphanumeric Symbols script.
      usp10: Improve selection drawing if selection starts in the middle of a cluster.
      user32: Modify EDIT_GetLineRect to better handle RTL lines.
      user32: Do not simply return 0 in EDIT_EM_PosFromChar if line ssa is NULL.
      usp10: Correct error in EDIT_GetLineRect in index for ScriptStringCPtoX.
      usp10: Implement ScriptGetFontScriptTags.
      usp10: Add currency scripts to match windows.
      usp10: Updates to ScriptGetFontScriptTags.
      usp10: Cache FontScriptTags information.
      usp10: Replace GSUB_get_script_table with GSUB_GetFontScriptTags.
      usp10: Update get_opentype_script to return OPENTYPE_TAG.
      usp10: Remove redundant information by making scriptData accessible and removing otTag.
      usp10: Convert newOtTag to an OPENTYPE_TAG.

Aurimas Fišeras (4):
      po: Update Lithuanian translation.
      po: Update Lithuanian translation.
      winecfg: Increase the size of the dpi label to fit Lithuanian translation.
      po: Update Lithuanian translation.

Austin English (3):
      ntoskrnl.exe: Add a stub for Ke386IoSetAccessProcess.
      ntoskrnl.exe: Add a stub for Ke386SetIoAccessMap.
      inetcpl.cpl: Add a stub for LaunchPrivacyDialog.

Detlef Riekenberg (1):
      ieframe: Improve status updates in BindStatusCallback_OnProgress.

Dmitry Timoshkov (2):
      kernel32: Add a test for MapViewOfFile called on a not accessible mapping.
      user32: Add some SetFocus message tests.

Erich Hoover (1):
      hhctrl.ocx: Fix HTML Help crashing on non-chm files.

Francois Gouget (30):
      user32: Avoid hardcoding the Unicode string literal lengths.
      dlls: Standardize on 'static const WCHAR' for our Unicode string literals.
      include: Add a few missing include directives to shlguid.h.
      include: Add the missing guiddef.h include directives.
      include: bits.h should include bits1_5.h.
      include: Add missing include directives to cor.idl.
      include: Import shtypes.idl in shdeprecated.idl.
      include: Don't import servprov.idl from urlhist.idl.
      include: indexsrv.idl should import oaidl, not objidl.
      iphlpapi/tests: Fix compilation on systems that don't support nameless unions.
      mountmgr: Add a trailing '\n' to a WARN() message.
      include: Move the ITargetFramePriv* interfaces to htiface.idl.
      winetest: Always report errors and fatal errors, even in quiet mode.
      sensapi: Define the SensEvents library in sensevts.idl.
      quartz: Define the QuartzTypeLib library in control.idl.
      comdlg32: Use sentence capitalization for group box labels.
      cryptui: Don't assign access keys to group box labels.
      inetcpl: Don't pad group box labels with spaces.
      winemine: Use sentence capitalization for group box labels.
      winefile: Fix the group box labels to follow the Windows GUI guidelines,.
      notepad: Don't assign access keys to group box labels or give them trailing punctuation.
      taskmgr: Use sentence capitalization for group box labels.
      include: Fix the wia idl imports.
      include: Fix the metahost.idl import directives.
      include: strmif.idl should import unknwn.idl.
      include: Add some D3D import and include directives.
      include: wincodecsdk.idl should import wtypes.idl.
      include: pstore.idl should import wtypes.idl.
      include: oledb.idl should include accctrl.h.
      winecfg: Fix the group box labels to follow the Windows GUI guidelines.

Frédéric Delanoy (5):
      crypt32: Avoid reading unitialized variables (Coverity).
      comctl32: Avoid using uninitialized value (Coverity).
      cmd: Merge two if blocks.
      po: Update French translation.
      po: Update French translation.

Gabriele Moabiti (1):
      wineconsole: Light and dark gray colors are exchanged in the user backend.

Gerald Pfeifer (1):
      winedump: Remove unused parameter from codeview_dump_linetab(). codeview_dump_linetab().

Hans Leidekker (6):
      winhttp/tests: Avoid crashes on some win2k systems.
      iphlpapi: Add a stub implementation of GetExtendedTcpTable.
      ws2_32: Return the right value for SO_CONNECT_TIME if the socket is not connected.
      msi: Fix changing media for normal files.
      msi: Use a common function to validate a product ID.
      msi: Fix handling of single quoted column names in SELECT queries.

Henri Verbeet (25):
      ddraw/tests: Introduce some functions for comparing floating-point vectors.
      ddraw/tests: Remove a redundant IDirect3DDevice7_SetViewport() call.
      ddraw/tests: Introduce proper vector types.
      wined3d: Get rid of the WINED3DBLEND typedef.
      wined3d: Get rid of the WINED3DBLENDOP typedef.
      ddraw/tests: Remove some error checking from ProcessVerticesTest().
      ddraw/tests: Add a ProcessVertices() test for Direct3D3.
      ddraw/tests: Move the Direct3D7 ProcessVertices() test to ddraw7.c.
      wined3d: Get rid of the WINED3DDEGREETYPE typedef.
      wined3d: Get rid of the WINED3DRENDERSTATETYPE typedef.
      wined3d: Don't call surface_init_sysmem() on surfaces with a PBO.
      wined3d: Handle client storage in surface_init_sysmem().
      wined3d: Handle client storage in surface_remove_pbo().
      wined3d: Get rid of the WINED3DVERTEXBLENDFLAGS typedef.
      wined3d: Get rid of the WINED3DCMPFUNC typedef.
      ddraw: Handle the Direct3D clipspace transformation.
      ddraw/tests: Fix a couple of test messages.
      ddraw/tests: Add some tests for DDSCL_CREATEDEVICEWINDOW.
      wined3d: Get rid of the WINED3DZBUFFERTYPE typedef.
      wined3d: Get rid of the WINED3DFOGMODE typedef.
      ddraw: DDSCL_CREATEDEVICEWINDOW requires DDSCL_EXCLUSIVE.
      ddraw: Clear the focus and device windows on DDSCL_NORMAL.
      ddraw: Properly handle DDSCL_CREATEDEVICEWINDOW.
      ddraw: Handle the special DDSCL_SETFOCUSWINDOW | DDSCL_CREATEDEVICEWINDOW combination.
      ddraw: Fix the title and class name for the auto ddraw device window.

Huw Davies (2):
      gdi32: Add support for geometric solid pens.
      gdi32/tests: Add tests for geometric solid pens.

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

Jacek Caban (51):
      jscript: Store type information in statement nodes.
      jscript: Use bytecode for block statement implementation.
      jscript: Use bytecode for execution main code block in exec_source.
      jscript: Use compiler for handling expression statements.
      jscript: Use compiler for handling if statement.
      jscript: Use compiler for hanling empty statements.
      jscript: Use compiler to handle variable statement.
      jscript: Get rid of no longer used expr_eval flags.
      jscript: Get rid of no longer needed identifier in exprval_t.
      jscript: Renamed jmp_z and jmp_nz to cnd_z and cnd_nz.
      jscript: Added new jmp_z opcode, more appropriate for branches.
      jscript: Added bytecode version of while statement.
      jscript: Added bytecode version of for loop statement.
      jscript: Added bytecode version of with statement.
      jscript: Added bytecode version of switch statement.
      jscript: Use bytecode for labelled statement stub.
      ntoskrnl.exe: Added IoGetCurrentProcess stub.
      vbscript: Added compiler support for parametrized assignment statements.
      jscript: Added bytecode version of for..in statement.
      jscript: Rename throw opcode to throw_ref.
      jscript: Use bytecode for throw statement.
      jscript: Added bytecode version of try statement.
      jscript: Use labels in compiler for ending loops.
      jscript: Added bytecode versions of break and continue statements.
      jscript: Get rid of no longer needed no_fallback hack.
      jscript: Added more control flow tests.
      mshtml: Use IURi for IHTMLLocation::get_hash implementation.
      jscript: Always use bytecode for with statement.
      jscript: Always use bytecode for for..in statement.
      jscript: Always use bytecode for for statement.
      jscript: Always use bytecode for switch statement.
      jscript: Always use bytecode for try statement.
      jscript: Always use bytecode for while statement.
      jscript: Moved exec_source to the bottom of the file.
      jscript: Get rid of stat_eval_table.
      jscript: No longer support per-statement compilation.
      jscript: Moved instr_off from statement_t to source_elements_t.
      jscript: Added bytecode dumper implementation.
      mshtml: Use IUri in IHTMLLocation::get_protocol implementation.
      mshtml: Reorder nsIURL functions to match vtbl order.
      actxprxy: Added htiface.idl interfaces.
      jscript: Handle invalid break statements in compiler.
      jscript: Handle invalid continue statements in compiler.
      jscript: Make compiler responsible for proper return from regular code vs. eval-interpreted code.
      jscript: Use bytecode for return statement implementation.
      jscript: Get rid of no longer needed type field of return_type_t structure.
      jscript: Use bytecode for labeled continue and break statements.
      jscript: Get rid of no longer needed compile_interp_fallback since we can handle all execution by bytecode.
      jscript: Get rid of no longer needed interp_tree.
      jscript: Get rid of return_type_t.
      mshtml: Use IUri in IHTMLLocation::put_port implementation.

Jörg Höhle (3):
      mmdevapi: Enforce limits on period and duration.
      winealsa.drv: Request ALSA period time to match MMDevAPI period time.
      winealsa: Use an ALSA buffer of 4 periods to limit prefill.

Ken Thomases (3):
      comdlg32: Fix a leak.
      winex11: Have ToUnicodeEx null-terminate the output buffer, if there's room.
      user32/tests: Test that ToUnicode null-terminates the buffer if it's big enough.

Kusanagi Kouichi (6):
      gdi32: Add a helper function to convert a string from A to W.
      gdi32: Use find_family_from_name and LIST_FOR_EACH instead of open-coding them.
      gdi32: Merge two ifs.
      gdi32: Split AddFontToList into two functions.
      gdi32: Add vertical fonts to font list.
      gdi32: Substitute glyph for vertical font only.

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

Matteo Bruni (3):
      wined3d: Improve invalid TEXTURETRANSFORMFLAGS handling.
      wined3d: Improve projection TEXTURETRANSFORMFLAGS handling in the ARB fragment ffp implementation.
      d3d9/tests: More D3DTSS_TEXTURETRANSFORMFLAGS projection tests.

Michael Mc Donnell (1):
      d3dx9/tests: Add a D3DXValidMesh test.

Nikolay Sivov (17):
      msxml3: Skip leading space characters when loading from BSTR.
      msxml3: Implement response headers access methods.
      msxml3: libxml2 is not used for writer.
      msxml3: Use ascii/utf-8 encoding for request body.
      msxml3: Support VT_VARIANT|VT_BYREF for body data.
      comctl32: Fix parameter validation for CreateMRUListLazyA().
      msxml3: Support VT_ARRAY|VT_UI1 as body type.
      msxml3: Support DELETE method in IXMLHttpRequest.
      msxml3: Fix VT_BSTR case for IXMLHttpRequest::send().
      po: Update Russian translation.
      msxml3: IXSL* implementations do not depend on libxml2.
      comctl32: Block selection change depending on TCN_SELCHANGING result.
      msxml3: Implement element stack and use it in related callbacks.
      wshom.ocx: Added IDispatch support for IWshShell3.
      po: Update Russian translation.
      wshom.ocx: Fix IWshShell3 definition.
      wshom.ocx: Added IWshCollection stub and some tests.

Piotr Caban (31):
      msvcp90: Reorder classes to avoid forward declarations.
      msvcp90: Added collate<char> constructors implementation.
      msvcp90: Use macro to define RTTI data.
      msvcp90: Added macro to call functions from vtable.
      msvcp90: Added collate<char>::compare implementation.
      msvcp90: Added collate<char>::do_hash implementation.
      msvcp90: Correctly export collate<short> constructors.
      msvcp90: Added partial collate<wchar_t> implementation.
      msvcp90: Added ctype<char> constructors implementation.
      msvcp90: Added ctype<char>::narrow functions implementation.
      msvcp90: Added ctype<char>::widen functions implementation.
      msvcp90: Hold _LOCK_LOCALE critical section while _Lockinfo object exists.
      msvcp90: Added ctype<char>::tolower functions implementation.
      msvcp90: Added ctype<char>::toupper functions implementation.
      msvcp90: Added ctype<char>::is functions implementation.
      msvcp90: Don't crash if NULL is passed to _Strcoll and _Wcscoll.
      msvcp90: Added ctype<wchar_t> constructors implementation.
      msvcp90: Added ctype<wchar_t>::narrow functions implementation.
      msvcp90: Added ctype<wchar_t>::widen functions implementation.
      msvcp90: Added ctype<wchar_t>::tolower functions implementation.
      msvcp90: Added ctype<wchar_t>::toupper functions implementation.
      msvcp90: Added ctype<wchar_t>::is functions implementation.
      msvcp90: Added ctype<wchar_t>::scan functions implementation.
      msvcp90: Added numpunct<char> class stub.
      msvcp90: Added numpunct<wchar_t> class stub.
      msvcp90: Correctly initialize vtable pointer in Getcat functions.
      msvcrt: NULL terminate strings returned by _Getdays and _Getmonths.
      msvcp90: Fix class functions invocation on 64bit systems.
      msvcp90: Added numpunct<char> constructors implementation.
      msvcp90: Added numpunct<char> class implementation.
      msvcp90/tests: Test virtual function calls returning structures.

Rico Schüller (16):
      d3dx9/tests: Add effect parameter value GetValue() test.
      d3dx9/tests: Add effect parameter value GetBool() test.
      d3dx9/tests: Add effect parameter value GetBoolArray() test.
      d3dx9/tests: Add effect parameter value GetInt() test.
      d3dx9/tests: Add effect parameter value GetIntArray() test.
      d3dx9: Simplify ID3DXBaseEffect::SetInt().
      d3dx9: Use a loop in get_vector().
      d3dx9/tests: Add effect parameter value GetFloat() test.
      d3dx9/tests: Add effect parameter value GetFloatArray() test.
      d3dx9/tests: Add effect parameter value GetVector() test.
      d3dx9/tests: Add effect parameter value GetVectorArray() test.
      d3dx9: Fix variable sequence.
      d3dx9/tests: Add effect parameter value GetMatrix() test.
      d3dx9/tests: Add effect parameter value GetMatrixArray() test.
      d3dx9/tests: Add effect parameter value GetMatrixTranspose() test.
      d3dx9/tests: Add effect parameter value GetMatrixTransposeArray() test.

Ričardas Barkauskas (2):
      ws2_32/tests: Test some completion port behavior.
      ws2_32: Don't post completion packet if sending fails with error immediately.

Stefan Leichter (6):
      dhcpcsvc: New stub dll.
      ntoskrnl.exe: Add stub for IoUnregisterShutdownNotification.
      wine.inf: Add registry key for DiskDrive class.
      ntoskrnl.exe: Add stub for IoInitializeRemoveLockEx.
      setupapi: Add stub for SetupDiGetClassBitmapIndex.
      setupapi: Add stub for SetupDiDrawMiniIcon.

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

--
Alexandre Julliard
julliard@winehq.org
