The Wine development release 1.5.7 is now available.

What's new in this release (see below for details):
  - New version of the Gecko engine based on Firefox 13.
  - Dynamic device support with UDisks2.
  - More stream classes implemented in the C++ runtime.
  - Support for metadata in TIFF files.
  - Fleshed out WBEM implementation.
  - Improved support for printer paper sizes.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.7.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.7.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

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

Bugs fixed in 1.5.7 (total 77):

   3962  Ragnarok Online + private servers
   5535  Planescape:Torment doesn't work
  11108  J. River MEDIA CENTER 12.0 crashes
  12731  Lego Digital Designer fonts rendered look bad
  14391  MagicISO interface flickers
  16008  T-Online Internet Telefon - installation works, execution not.
  16651  Wizard101: Characters not rendered.
  17229  TGB Dual crashes when opening files
  17313  Quincy 2005 IDE grep tool needs msvcp80.dll.??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z
  17709  AutoCAD 2008: Quick Help Toolbar incorrectly displayed
  17733  Trivial Pursuit Unhinged +NoCD fails to load
  18160  Compile broken in dlls/iphplpapi/ipstats.c on NetBSD 5.0
  18161  unintialized variables in dlls/ntdll/cdrom.c on NetBSD 5.0
  18962  Netscape is crashing immediately after execution.
  19570  Cake Mania 2 page fault
  20189  Svenska spel poker-client is useless
  20661  Snuffler: rendering of buttons and list items doesn't work.
  20788  problem with bet-at-home poker when gecko is installed
  21231  program "4 elements" won't start
  21545  Metin2 crashes since Torrent Patcher
  22936  AutoCAD 2008: QuickCalc fails to start
  23742  Graphics appear upside-down in SinkSub Pro and Piranha Panic
  24022  NVShaderPerf fails to find plugins/performance modules (and therefore to start)
  24379  Unknown problem with Wizard 101
  24899  The Last Dance crashes with unimplemented function d3dx9_36.dll.D3DXCreateRenderToSurface
  25200  AutoCAD 2008: Toolbars are repainted too slowly
  25243  Microsoft Viva Pinata fails on startup (Wine-Gecko "SetThreadName" MSVC exception 0x406d1388 breaks SafeDisc debugger)
  25275  Civilization V and more Games/Apps need msvcp90.dll.??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ
  25429  Necrovision demo fails to start
  25539  Heroes of Newerth needs msvcp80.dll.??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ (purist)
  25966  AutoCAD 2009: Unimplemented function msvcp80.dll.??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ
  26195  Counter-Strike Source Beta freezes after 30 seconds of internet gameplay on a multi-core system
  26467  Builtin IE cannot open https://ebank.srcb.com:446/pweb/pbperbank
  26651  Page fault connecting to my.if.com
  26834  SlingPlayer 1.5 UI very slow to respond
  26939  Multiple games/apps need msvcp90.dll.??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z (Fifa11 demo, Opera Mobile Emulator 11, Kindle for PC)
  27064  Liquidator 2 needs msvcp71.dll.??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ
  27318  OpenGL 2.0 Shading Language Terrain Texturing Demo crashes on unimplemented function msvcp100.dll.??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z
  27764  Civ 5 demo wants msvcp90.dll.$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ (purist)
  27767  htmlhelp not showing diacritic characters from html encoded entity
  27918  GTAIV doesn't show anything after switching resolution
  28041  Galactic Civilisation II: Graphical glitches: some polygons of ships seem to have wrong coordinates
  28119  Games with UPlay won't start due to ReadFileEx failture
  28201  Diablo III D3D error when restarting graphics
  28228  Multiple apps need msvcp90.dll.??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z (Ragnarok Online, Settlers 7, XnView, Nokia Suite)
  28360  Mass Effect: msvcp90:locale__Init needs to be implemented
  28501  MySpaceIM fails to load
  28528  Google Earth 4.3 fails to find msvcp80.dll with Wine32 but not Wine64 (WoW64)
  28668  Sound does not work for SlingPlayer 1.5
  28719  Trillian 5 crashes with "wine: Call from 0x7ed2e629 to unimplemented function msvcp90.dll.?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z"
  28772  Secret of Monkey Island wants msvcp80.dll.?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z
  28793  Kindle for PC needs msvcp90.dll.??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z
  29073  iexplore: Add gui to trust a new certificate
  29439  Dreamweaver MX 2004 doesn't run
  29666  TurboTax 2011 fails to install (.NET 4.0 Framework verification fails)
  29973  StarBurn doesn't recognize its default drive selection for erasing
  30298  Sikuli IDE runtime error
  30425  Toca 3 crashes when start race: D3DXGetImageInfoFromFileInMemory File type DDS is not supported yet
  30456  failure starting up wizard101
  30465  BridgeCentral: Invalid floating point operation in mozjs.dll (fldcw in JSDOUBLE_IS_INT32)
  30528  Tibia bot crashes when connecting to tibia process (kernel32 K32EnumProcessModules() 'needed' out parameter needs a check for NULL)
  30644  Random crash while using the downloader for StarCraft 2
  30695  Port Royale: graphical issues in menus and in mid game
  30776  Faerie Solitaire (Steam version) tends to crash
  30782  msvcp71.dll.??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z should be implemented (needed by Ship Simulator 2008, maybe others)
  30786  King's Bounty: Armored Princess and Crossworlds need d3dx9_36.dll.D3DXQuaternionSquadSetup
  30798  gdiplus: GdipNewInstalledFontCollection fails in case system have got at least one OTF font installed
  30825  Xwing95 crash
  30833  Buccaneer lost most of the sounds (music, speech)
  30834  page fault in ddraw regression
  30846  Super Monday Night Combat: Unable to join multiplayer match, unable to leave queue.
  30869  Word 2010 UI uses wrong font size - leads to huge UI elements
  30885  Trackmania United Forever crashes on startup
  30918  'make test' crashes in dlls/windowscodecs/test/info.c for a new wine prefix
  30923  SelectClipRgn gets wrong arguments in metafiles?
  30930  Dota 2 won't start
  30970  SharpEye: endless loop drawing message box when opening *.mro file

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

Changes since 1.5.6:

Akihiro Sagawa (3):
      gdi32/tests: Make GetStockObject tests pass on East-Asian machines.
      gdi32: Fix East-Asian font parameters.
      gdi32: Remove an outdated comment in struct DefaultFontInfo.

Alexandre Julliard (7):
      mountmgr: Add a helper function for parsing UDisks media compatibility.
      mountmgr: Add support for UDisks2.
      windowscodecs: Fix some broken tests.
      wininet: Fix a compiler warning on Mingw.
      gdi32: Fix the contents of the region data in metafiles.
      wing32: Don't recommend a top-down DIB.
      gdi32: Fix StretchDIBits return value when destination is clipped.

Alistair Leslie-Hughes (1):
      msxml3: Implement IXMLParser Get/Set Flags.

Andrew Eikum (2):
      dsound: Fail if app requests 3D buffer interface on a non-3D buffer.
      hhctrl.ocx: Don't use GWLP_USERDATA to store private data.

André Hentschel (19):
      winedbg: Add multiplication operators to Thumb2 disassembler.
      winedbg: Add long multiplication and division operators to Thumb2 disassembler.
      ntdll: Enhance FreeBSD checks for cdrom code to also check for DragonFly BSD when appropriate.
      d3drm/tests: Add GetClassName tests.
      ntdll: Check for NetBSD in CDROM_Verify.
      d3drm: Implement IDirect3DRMFrameX_GetClassName.
      d3drm: Implement IDirect3DRMLight_GetClassName.
      d3drm: Implement IDirect3DRMMeshBuilderX_GetClassName.
      jscript/tests: Fix some typos.
      d3drm: Implement IDirect3DRMX_CreateMesh.
      d3drm: Implement IDirect3DRMMesh_GetClassName.
      d3drm: Implement IDirect3DRMMaterial2_GetClassName.
      d3drm: Implement IDirect3DRMX_CreateTexture.
      d3drm: Fix initial specular value of the Material2 interface.
      d3drm: Implement IDirect3DRMTextureX_GetClassName.
      d3drm: Implement IDirect3DRMDeviceX_GetClassName.
      d3drm: Implement IDirect3DRMWinDevice_GetClassName.
      d3drm: Implement IDirect3DRMViewportX_GetClassName.
      d3drm/tests: Destroy window after use.

Aric Stewart (5):
      usp10: Properly handle fonts with scripts without a default language.
      usp10: Corrections for ShapeCharGlyphProp_Thai.
      usp10: Do not use custom indic ShapeCharGlyphProp when shaping Indic numeric scripts.
      usp10: In ShapeCharGlyphProp_BaseIndic set justification to SCRIPT_JUSTIFY_NONE for glyphs with no characters.
      usp10: Add ShapeCharGlyphProp_Hebrew.

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

Bruno Jesus (2):
      ws2_32: Fix hostent memory allocation.
      comdlg32: Fix NULL lpstrFile uses in FILEDLG95_OnOpen.

Christian Costa (5):
      d3drm: Fix vertex index test and print a warning when it is out of range.
      d3drm: Handle texture associated with the material when loading a mesh.
      d3drm: Free texture object when releasing mesh builder object.
      d3drm: Free all mesh resources when releasing mesh object.
      d3drm: Implement IDirect3DRMMeshImpl_SetGroupColorRGB.

Damjan Jovanovic (6):
      configure: Detect mingw32 better on FreeBSD.
      winebuild: Support the mingw32 target without an i[3456]86- prefix.
      winegcc: Support the mingw32 target without an i[3456]86- prefix.
      shell32: Fix some return types.
      shell32: Fix some function prototypes.
      include/shlobj.h: Add some missing APIs.

Dan Kegel (4):
      ntdll: Avoid clobbering valgrind annotations during HeapReAlloc.
      kernel32: Quiet an extremely verbose stub fixme.
      riched20: Accept middle click as paste (like edit control does).
      gdi32: Add test for SelectClipRgn in metafiles, make it pass.

Detlef Riekenberg (6):
      ntprint: Do not fail when the spooler service was stopped.
      kernel32/tests: Do not test GetLastError on success.
      kernel32/tests: Accept higher PRODUCT_* values.
      devenum: Do not fail with a IBindCtx (with tests).
      winspool/tests: Fix failures when the spooler service is not running.
      shell32/tests: Ignore case when comparing filenames.

Dmitry Timoshkov (36):
      gdi32: Do not normalize height of the default GUI font.
      ole32: Add VT_I1 to the list of supported variant types.
      windowscodecs: Reimplement TiffDecoder_GetFrameCount using TIFFNumberOfDirectories.
      gdiplus: Accept wider range of fonts.
      windowscodecs: Add a test to show that metadata reader may not rewind the stream after loading the data.
      windowscodecs: Implement partial loading of IFD metadata.
      windowscodecs: Add support for WICPersistOptionsLittleEndian/WICPersistOptionsBigEndian in the IFD metadata reader.
      windowscodecs: Check IFD structure when loading metadata.
      include: Fix WICPersistOptions definition.
      windowscodecs: Remove not reachable code in the TIFF decoder.
      gdiplus: Add a test for creating a nonexistent font with GdipCreateFontFromLogfont.
      gdiplus: GdipCreateFontFromLogfont also returns NotTrueTypeFont for a not present font.
      gdiplus: Remove a redundant cast.
      gdiplus: Fix parameter order in expect() calls.
      gdiplus: Add active frame parameter to the WIC decoder interface.
      gdiplus: Create a copy of the source stream when loading an image.
      gdiplus: Implement GdipImageSelectActiveFrame.
      windowscodecs: Add MetadataReaderInfo implementation.
      windowscodecs: Implement MetadataHandler_GetMetadataHandlerInfo.
      windowscodecs: Implement MetadataHandler_GetMetadataFormat.
      windowscodecs: Implement MetadataHandler_GetValueByIndex.
      gdiplus: Make some data const.
      windowscodecs: Implement MetadataReaderInfo_GetFriendlyName.
      windowscodecs: Implement MetadataReaderInfo_GetVersion.
      windowscodecs: Add support for more types of IFD fields.
      windowscodecs: Add support for loading of multiple simple IFD fields.
      windowscodecs: Fix handling of 8-byte IFD fields.
      windowscodecs: Add tests for more types of IFD fields.
      windowscodecs: Add support for IFD_ASCII field type.
      windowscodecs: Add support for IFD_UNDEFINED field type.
      windowscodecs: Handle IFD fields with count 0 same way as with count 1.
      windowscodecs: Add a test for endianness support in IFD metadata reader.
      windowscodecs: Add support for loading of multiple 8-byte IFD fields.
      include/wine/test.h: Fix compilation of standalone tests with PSDK headers.
      windowscodecs: Create a IWICMetadataReader for a TIFF frame.
      kernel32: Add a test for deleting a file opened for reading.

Erich Hoover (4):
      hhctrl.ocx: Fix displaying the first page for some help files.
      hhctrl.ocx: Add HTML to Unicode decoding capability to the table of contents.
      hhctrl.ocx: Use HTML decoder for the index.
      hhctrl.ocx: Add support for the CHM code page.

Francois Gouget (29):
      d3drm: Move up the IDirect3DRM{Frame,Light,Visual}Array implementations to avoid forward declarations.
      d3drm: Make Direct3DRM{Frame,Light,Visual}Array_create() static.
      wined3d: Reorder some surface functions to avoid the need for forward declarations.
      wined3d: Make some surface functions static.
      user32: Reorder some DDE functions to avoid the need for forward declarations.
      user32: Make some DDE functions static.
      joy.cpl: Make list_dlgproc() static.
      mmdevapi: Make MMDevice_GetPropValue() static.
      gdiplus: Make get_font_hfont() static.
      d3dx9_36/tests: Make a couple of test functions static.
      iphlpapi: Don't rely on the HAVE_XXX macros having a numeric values.
      d3dcompiler_43: Make debug_dump_ir_constructor() static.
      msvcrt: Fix the name of the Portuguese locale alias.
      crypt32/tests: Get rid of unneeded function typedefs.
      msi/tests: Get rid of unneeded function typedefs.
      kernel32/tests: Get rid of unneeded function typedefs.
      shell32/tests: Get rid of unneeded function typedefs.
      kernel32: Use the English (United States) spelling of license.
      kernel32/tests: Add a trailing '\n' to an ok() call.
      kernel32/tests: Add line-wrapping tests for FormatMessage().
      comctl32: Fix lstrncmpiW() so its return value is standard and use the CSTR_XXX macros.
      msvcp90: Use the CSTR_XXX macros instead of numeric literals.
      kernel32/tests: Use the CSTR_XXX macros instead of numeric literals.
      comctl32: Simplify the string comparison functions a bit and use the CSTR_XXX macros.
      msvcrt: Use the CSTR_XXX macros instead of numeric literals.
      shlwapi: Simplify the string comparison functions a bit and use the CSTR_XXX macros.
      reg: Use the CSTR_XXX macros instead of numeric literals.
      xcopy: Use the CSTR_XXX macros instead of numeric literals.
      oleaut32: Use the CSTR_XXX macros instead of numeric literals.

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

Gerald Pfeifer (1):
      ntdll: Omit unused typedef in test_query_process.

Hans Leidekker (36):
      msi: Add support for 64-bit registry components.
      msi: Ignore the value if a registry value name is special.
      msi: Fail if a registry key cannot be created.
      msi: Support registry key names that exceed 255 characters.
      msi/tests: Use only uppercase characters for the PID_REVNUMBER property.
      msi: Don't fail if no .NET runtime is available.
      msi: Always load mscoree.dll from the system directory.
      msi: Keep assembly caches loaded until the package is destroyed.
      include: Define WBEM_GENERIC_FLAG_TYPE.
      wbemprox: Add a stub implementation of IWbemServices.
      include: Define IWbemClassObject.
      wbemprox: Add stub implementations of IEnumWbemClassObject and IWbemClassObject.
      wbemprox: Add support for parsing WQL queries.
      wbemprox: Add a partial Win32_BIOS class implementation.
      wbemprox: Add support for evaluating query conditions.
      wbemprox: Implement IEnumWbemClassObject::Next.
      wbemprox: Implement IEnumWbemClassObject::Reset.
      wbemprox: Implement IEnumWbemClassObject::Skip.
      wbemprox: Implement IWbemClassObject::Get.
      wbemprox: Add a partial Win32_Process class implementation.
      wbemprox: Add query tests.
      wbemprox: Add tests for IWbemServices.
      wbemprox: Improve tracing in IWbemLocator::ConnectServer.
      include: Fix the definition of IWbemClassObject::GetNames.
      wbemprox: Implement IWbemClassObject::GetNames.
      wmic: Add support for querying class properties.
      wbemprox: Add a partial Win32_ComputerSystem class implementation.
      wbemprox: Add a partial Win32_Processor class implementation.
      wbemprox: Support mixed dynamic and static table data.
      wbemprox: Add a partial Win32_OperatingSystem class implementation.
      wbemprox: Add support for retrieving system properties.
      wbemprox: Implement Win32_Process.Handle.
      wbemprox: Append key properties to the class path.
      wbemprox: Implement Win32_Process.CommandLine for the current process.
      wbemprox: Handle more property types in get_propval.
      wbemprox: Add a partial Win32_VideoController class implementation.

Henri Verbeet (26):
      d3d9: Get rid of IDirect3DVertexShader9Impl.
      d3d9: Get rid of IDirect3DPixelShader9Impl.
      d3d9: Get rid of IDirect3DQuery9Impl.
      wined3d: Set undefined vertex attributes to 0.0.
      wined3d: Invalidate the entire buffer on maps with WINED3DLOCK_DISCARD.
      ddraw: Merge ddraw_surface_destroy() into ddraw_surface_cleanup().
      wined3d: Unset the depth/stencil surface before checking resources in wined3d_device_reset().
      wined3d: Reset render target bindings in wined3d_device_reset().
      d3d9/tests: Add a test for resource bindings after reset.
      d3d8/tests: Add a test for resource bindings after reset.
      wined3d: Rename WINED3DLOCK_* to WINED3D_MAP_*.
      wined3d: Only filter redundant mode changes in wined3d.
      wined3d: Lie about the display format in wined3d_get_adapter_display_mode().
      ddraw: Use wined3d_get_adapter_display_mode() in ddraw_create_swapchain().
      ddraw: Use wined3d_get_adapter_display_mode() in ddraw7_GetDisplayMode().
      ddraw: Use wined3d_get_adapter_display_mode() in ddraw7_GetFourCCCodes().
      ddraw: Use wined3d_get_adapter_display_mode() in ddraw7_GetScanLine().
      ddraw: Use wined3d_get_adapter_display_mode() in CreateSurface().
      ddraw: Use wined3d_get_adapter_display_mode() in d3d7_EnumZBufferFormats().
      ddraw: Use wined3d_get_adapter_display_mode() in d3d_device7_EnumTextureFormats().
      ddraw: Use wined3d_get_adapter_display_mode() in d3d_device2_EnumTextureFormats().
      wined3d: Implement mode setting in the adapter instead of the device.
      wined3d: Just forward wined3d_device_get_display_mode() to the appropriate swapchain.
      wined3d: Properly retrieve the display mode in wined3d_device_set_cursor_properties().
      wined3d: Only store a different screen format if it's explicitly changed through wined3d.
      wined3d: Get rid of the d3d_caps debug channel.

Hilko Bengen (1):
      sfnt2fnt: Fix broken .fon files on big-endian architectures.

Huw Davies (17):
      winspool: Install the ppd files into the driver directory.
      winspool: Set the printer status of old printers to indicate that they should check for driver updates.
      winspool: Update the ppd file of an already installed printer in the first call to OpenPrinter.
      localspl: Remove a bunch of casts.
      winspool: Update the ppd for LPR printers too.
      winspool: Use the helper to set DWORD registry values.
      winspool: Set the timeout entries to zero.
      localspl: Have GetPrinterDriverDirectory create the driver directory.
      winspool: Set the printer registry values before calling into the driver.
      winspool: Add a missing default priority value.
      winspool: Set the printer description from the cups printer-info option.
      winspool: Set the printer location from the cups printer-location option.
      wineps: Retrieve the ppd file from the driver directory.
      wineps: Add the ability to override the ppd file's default pagesize and duplex settings.
      wineps: Always update the default devmode.
      winspool: Update the devmode when we update the driver.
      winspool: On OS/X read the default paper size from the core printing api.

Jacek Caban (23):
      wininet: Added InternetGetSecurityInfoByURL[AW] implementation.
      wininet: Added InternetGetSecurityInfoByURL tests.
      urlmon: Use error dialog for ERROR_INTERNET_SEC_CERT_REV_FAILED error if IHttpSecurity returns S_FALSE.
      mshtml: Wine Gecko 1.6 release.
      urlmon: Avoid useless InternetQueryOptionW call.
      d3d9.h: Added missing D3DCREATE_* flags.
      d3d9types.h: Added missing D3DSWAPEFFECT_* values.
      d3dcompiler.h: Added missing extern "C".
      mshtml: Release script hosts in window_set_docnode.
      guiddef.h: REF* types should not depend on CINTERFACE.
      services.exe: Added tests.
      advapi32: Pass service name as argv[0] to ServiceMain.
      wininet: Fixed returned buffer size in HttpQueryInfo(HTTP_QUERY_STATUS_CODE) when insufficient buffer is passed.
      wininet: Added support for more certificate error types.
      mshtml: Return true in IOmNavigator::javaEnabled.
      jscript: Always store numeric literals as double.
      jscript: Use num_set_int in array.c.
      jscript: Use num_set_int where possible.
      jscript: Use INFINITY macro instead of ret_inf() hack.
      jscript: Use INFINITY macro instead of num_set_inf().
      jscript: Make Function object invocation a special case in IDispatchEx implementation.
      jscript: Pass jsthis internally without using DISPPARAMS.
      jscript: Moved DISPPARAMS conversion to InvokeEx.

Julian Rüger (3):
      po: Update German translation.
      po: Update German translation.
      ntprint/tests: Fix some typos.

Józef Kucia (9):
      d3dx9/tests: Add tests for D3DXCreateRenderToEnvMap.
      d3dx9: Add ID3DXRenderToEnvMap interface stub.
      d3dx9/tests: Improve test failure messages for check_{ref, release}.
      d3dx9/tests: Use inline functions instead of check_pixel_{1bpp, 2bpp, 4bpp} macros.
      d3dx9: Get rid of ID3DXFontImpl.
      d3dx9/tests: Add tests for ID3DXFont::PreloadText.
      d3dx9/tests: Add tests for ID3DXFont::GetGlyphData.
      d3dx9: Recognize X8B8G8R8 pixel format in DDS files.
      d3dx9/tests: Improve test failure messages for check_dds_pixel_format.

Ken Thomases (1):
      winex11: Fix correspondence between main_key_LT_B and main_key_vkey_qwerty.

Lauri Kenttä (2):
      po: Update Finnish translation.
      po: Update Swedish translation.

Lucas Zawacki (1):
      joy.cpl: Hardcode axis name strings that were in joy.rc.

Marcus Meissner (1):
      kernel32: Fixed read overflow in WriteFile argument.

Matteo Bruni (8):
      d3dcompiler: Parse vector and matrix declarations.
      d3dcompiler: Parse sampler declarations.
      d3dcompiler: Parse function declarations.
      d3dcompiler: Parse function definitions.
      d3dcompiler: Parse constructors.
      wpp: Invert 'type' callback parameter value, to match comment.
      wpp: Explicitly pass include type to the lookup callback function.
      d3dcompiler: Add some tests for 'system' type includes.

Michael Stefaniuc (5):
      include: Drop outdated comment about COM interface implementations.
      include: Undef INTERFACE right after it is used.
      wer: Use FIELD_OFFSET to calculate the size of a struct with variable length array.
      wined3d: Avoid sizeof on structs with variable length arrays.
      avifil32: Drop the 'register' storage-class specifier.

Nikolay Sivov (5):
      comctl32/listview: Properly update selection mark on item state change.
      msxml3: Reuse MXAttributes implementation for SAX reader attributes reporting.
      msxml3: Fix status text value parsing.
      msxml3: Revert: msxml3: Reuse MXAttributes implementation for SAX reader attributes reporting.
      msxml3: Reader shouldn't depend on input being properly allocated BSTR string.

Nozomi Kodama (5):
      include: Remove useless todo's.
      d3dx9_36: D3DXQuaternionLn computes as if the norm of the input is 1.
      d3dx9_36: Implementation of D3DXQuaternionSquadSetup.
      d3dx9_36: Implementation of D3DXSHMultiply3.
      d3dx9_36: Recognize A8B8G8R8 format.

Per Johansson (1):
      ws2_32: In WSAIoctl(SIO_GET_INTERFACE_LIST), skip interfaces with no IPv4 address.

Piotr Caban (52):
      msvcp90: Fixed default locale constructor implementation.
      msvcp90: Added use_facet< codecvt<char> > implementation.
      msvcp90: Added locale::global implementation.
      msvcp90: Added basic_filebuf<char> implementation.
      msvcp90: Accept more base classes in DEFINE_RTTI_DATA macro.
      msvcp90: Added basic_ifstream<char> implementation.
      msvcp90: Added basic_istream<char>::getline(basic_string<char>) implementation.
      msvcp: Sync spec files.
      msvcp90: Added basic_iostream<char> implementation.
      msvcp90: Added basic_ofstream<char> implementation.
      msvcp90: Specify open mode in basic_ifstream<char> functions.
      msvcp90: Added basic_fstream<char> implementation.
      msvcp90: Export locale::facet vtable.
      msvcp90: Export locale::facet_Register function.
      msvcp80: Added _Getcat implementation for supported facets.
      msvcp90: Added basic_ostream<char>::endl implementation.
      msvcp90: Use codecvt<char>::is in basic_istream_char__Ipfx function.
      msvcp90: Added operator>>(basic_istream<char>, basic_string<char>) implementation.
      msvcp: Sync spec files.
      msvcrt/tests: Fix Portuguese locale test on NT4.
      msvcp90: Added operator<<(basic_ostream<char>, basic_string<char>) implementation.
      msvcp90: Added cin, cout and cerr objects.
      msvcp90: Added basic_ostream<char>::operator<<(function) implementation.
      msvcp90: Added setprecision implementation.
      msvcp90: Added setw implementation.
      msvcp90: Added basic_ios::narrow implementation.
      msvcp90: Added basic_ios::widen implementation.
      msvcp: Sync spec files.
      msvcp90: Added codecvt<wchar> class stub.
      msvcp90: Added codecvt<wchar> implementation.
      msvcp90: Added _Stodx implementation.
      msvcp90: Added _Stofx implementation.
      msvcp90: Added _Stollx implementation.
      msvcp90: Added _Stoullx implementation.
      msvcp90: Fix basic_ios<char>::imbue implementation.
      msvcp90: Rename num_get_char_ctor__Init function because it's not a constructor.
      msvcp90: Separate num_get::get(long double) and num_get::get(double) functions.
      msvcp90: Define ios_base structure globally.
      msvcp90: Define basic_streambuf structure globally.
      msvcp90: Added num_get<char> constructors implementation.
      msvcp90: Added num_get<char>::_Getffld implementation.
      msvcp90: Added num_get<char>::_Getifld implementation.
      msvcp90: Added num_get<char>::get functions implementation.
      msvcp90: Added istream>>(base type) implementation.
      msvcp90: Fixed fraction digits ignoring in num_get_char__Getffld.
      msvcp90: Added num_put<char> class stub.
      msvcp90: Added partial num_put<char> implementation.
      msvcp90: Added num_put<char>::put(integral number).
      msvcp90: Added num_put<char>::put(bool) implementation.
      msvcp90: Added num_put<char>::put(double) implementation.
      msvcp90: Added basic_ostream::operator<<(base type) implementation.
      msvcp: Sync spec files.

Roderick Colenbrander (2):
      opengl32: Sync with latest GL specs.
      opengl32: Add wglGetProcAddress tests.

Stefan Leichter (2):
      kernel32: Let K32EnumProcessModules fail if the last parameter is NULL.
      psapi/tests: Added tests for EnumProcessModules with last parameter NULL.

Thomas Faber (11):
      oleaut32: Fix build with MSVC.
      wininet: Correctly fail INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT if libssl is not available.
      ws2_32/tests: Add missing parentheses to ok() output.
      wininet: Use the correct struct in a sizeof.
      port.h: Add INFINITY macro.
      wined3d: Use INFINITY.
      include: Make IMAGE_COR20_HEADER declaration compatible with PSDK headers.
      wininet: Use the correct type for sock_namelen in FTP_Connect.
      imagehlp: Do not pass NULL to WriteFile as lpNumberOfBytesWritten.
      include/httprequest.idl: Use widl-specific attributes only with widl.
      wintrust/tests: Fix build with MSVC.

Ulrik Dickow (1):
      msxml3/tests: Test namespace change for all document versions.

Vincent Povirk (18):
      include: Add IWICPixelFormatInfo definition.
      windowscodecs: Add test for IWICComponentInfo.
      windowscodecs: Register pixel formats.
      windowscodecs: Add stub IWICPixelFormatInfo implementation.
      windowscodecs: Implement IWICComponentInfo::GetAuthor.
      gdiplus: Check for NULL image in GdipImageRotateFlip.
      kernel32: Add named pipe server test with ReadFileEx/WriteFileEx.
      kernel32: Add test for pending ReadFileEx/WriteFileEx calls.
      kernel32: Return success from ReadFileEx/WriteFileEx when I/O is pending.
      windowscodecs: Check for NULL in IWICComponentInfo::GetComponentType.
      windowscodecs: Implement IWICComponentInfo::GetFriendlyName.
      windowscodecs: Always report pixel formats are signed.
      windowscodecs: Implement IWICComponentInfo::GetVendorGUID.
      windowscodecs: Implement IWICComponentInfo::GetVersion.
      windowscodecs: Report missing component info strings as zero-length.
      gdiplus: Scale all points in GdipAddPathString instead of the font.
      gdiplus: Don't position characters by glyph metrics in GdipAddPathString.
      gdiplus: Fix vertical alignment calculation in GdipAddPathString.

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

--
Alexandre Julliard
julliard@winehq.org
