The Wine development release 1.1.35 is now available.

What's new in this release (see below for details):
  - Support for OLE transacted storage.
  - Better certificate checking on secure connections.
  - More progress on the 16-bit separation.
  - Left 4 Dead 2 DRM really supported now.
  - MSI performance improvements.
  - 64-bit fixes in debugger support.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.1.35.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.1.35.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

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

You can also get the current source directly from the git
repository. Check http://www.winehq.org/site/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.1.35:

   5908  Ability Office 4 doesn't start up?
   6930  TortoiseSVN fails to install
   8394  IMVU 3D Instant Messenger not visible in wine's uninstaller
   8895  Circuit Design Suite 10 fails to install
   9535  WinPCap 4.0.1 installer does not run at all
  10950  Colin McRae Rally 04: picture shifted down by ~1/4 of height
  12014  Ability installer crashes in crypt32
  12418  parent window getting closed instead of a tool window in KDE
  13393  closing one virtual desktop closes other(s)
  14378  Issues with maps and character portrait in Morrowind
  14390  Gmax 1.2: Fatal Error on Install - Ended Prematurely.
  14465  NdrClientCall2 is unaware of comm_status and fault_status variables
  14536  FLSynthmaker crashes FL Studio
  14995  wined3d regression results in broken rendering for Age of Empires II
  15176  Assassin's Creed Install crashes
  15278  ApexDC++ cannot connect to users
  15624  poivy crashes
  15638  Adobe Photoshop CS4 installer crashes on unimplemented GetProductInfo if run in Vista mode
  15711  GetHostName and GetHostByName
  15940  Ethnic Cleansing crashes: mpegsplit.c assertion
  16244  Installer of Age of Empires 3 crashes
  16299  IMVU 3D Instant Messenger installer crashes
  17666  WinARM make crashes
  17911  Gothic 3: Stripe on the right part of the screen is not updated in high resolutions
  18120  No text in Qt-4.5.0 and later apps when winver >= 2000
  18574  Win92 Radio Scanner does not start
  18648  Error unimplemented function snmpapi.dll on start bginfo program
  18753  wineboot --shutdown does not close running programs
  18786  Minitab doesn't run anymore
  19483  crash when launching zattoo
  19802  SiSoftware Sandra 2009.SP4 unhandled exception
  19898  WinMX: crashes instantly upon start
  20013  Exchange Server 2007 fails to start
  20224  dlls/d3dx9_36/tests/math.C: Test failed: Expected matrix
  20281  Adobe Photoshop CS4 installer unusable
  20397  Eclipse (Europa) Welcome window is empty
  20492  Adobe CS4 installer hangs in memory and has to be killed
  20522  Graphic Glitcheson Game Maker games
  20653  Warcraft 3 freezes after successful login into Battle.net
  20684  Memory leak in CryptGenKey/CryptDestroyKey?
  20727  Characters in Sacred Underworld invisible
  20742  Sorted list view control always inserts at the end
  20806  Civilization II crashes on startup
  20823  Trackmania Nations Forever: really loud crackling / no sound
  20850  Write buffer overflow in WidenPath()
  20851  Read buffer overflow in CombineRgn, triggered by user32 and imm32 tests
  20898  Rayman 2: wine does not render "transparent color"
  20913  Multiple games crash on start
  20920  Read buffer overflow in StorageImpl_Construct in many msi tests
  20923  Crash in mshtml/tests/events.c when run under valgrind
  20941  3DMark 2001SE crash on start
  20943  Red Alert 3 fails to start
  20944  Civilization IV Beyond the Sword crashes after the loading splash screen.
  20949  Native d3dx9_27.dll causes crash on save load
  20960  Textures missing in demoscene's demo fr-041_debris
  20963  CIV4(BTS)/steam crashes at launch after upgrade wine1.2 1.1.33-0ubuntu1~ppa1 to 1.1.34-0ubuntu1
  20978  Quicktime 7.1.6.200 installer fails
  20991  EnumRfc1766_create return values
  20992  Invalid free in oleaut32 / vartype tests in test_VarBstrFromDate
  20995  Crysis Demo does not start
  20999  installations that were fast in 1.1.34 are very slow now due to ole32 storage changes
  21021  F1 Challenge 2007 crash
  21044  Platform SDK 2003 install fails?
  21045  Memory leak in SECUR32_addPackages

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

Changes since 1.1.34:

Alexander Nicolaysen Sørnes (4):
      appwiz.cpl: Update Norwegian Bokmål translation.
      winecfg: Update Norwegian Bokmål translation.
      oleacc: Add Norwegian Bokmål translation.
      winedbg: Add Norwegian Bokmål translation.

Alexandre Julliard (91):
      wineps.drv: Add a wrapper function for WriteSpool16.
      wineps.drv: Duplicate the print job support from 16-bit GDI.
      wineps.drv: Don't include 16-bit headers in psdrv.h.
      gdi32: Stop exporting the 16-bit print job functions.
      gdi32: Make gdi.exe into a stand-alone 16-bit module.
      gdi32: Don't include wingdi16.h by default.
      gdi32: Avoid use of some 16-bit types.
      aclocal.m4: Perform a more exhaustive search of the possible naming combinations for Mingw tools.
      ntdll: Get rid of a line break in a trace.
      server: Improve parameter checks when opening a directory.
      ntdll/tests: Add tests for open directories with NtCreateFile and strange options.
      ole32: Fix some pointer cast warnings on 64-bit.
      uxtheme: Fix some pointer cast warnings on 64-bit.
      d3d8/tests: Fix some pointer cast warnings on 64-bit.
      d3d9/tests: Fix some pointer cast warnings on 64-bit.
      msvcrt/tests: Fix the signal handler calling convention.
      crypt32/tests: Avoid size_t in traces.
      shlwapi/tests: Avoid size_t in traces.
      ntdll/tests: Avoid size_t in traces.
      winex11: Fix a compiler warning.
      winedbg: Use the explicit name for all A/W function.
      cmd: Use the explicit name for all A/W function.
      net: Use the explicit name for all A/W function.
      clock: Convert to Unicode.
      ntdll: Search the whole filesystem under the starting directory when opening files by id.
      winedbg: Fix a number of 64-bit pointer truncation issues.
      dbghelp: Moved addr_to_linear() to stack.c.
      dbghelp: Fix an invalid pointer cast.
      include: Remove useless definitions for nonexistent Win16 messages.
      server: Simplify computation of file modes from the security descriptor.
      msi/tests: Fix a handle leak.
      user32: Add a thunking mechanism for 16-bit edit word break procedures.
      user32: Split the code that deals with the 16-bit edit buffer handle to separate functions.
      user32: Store the 16-bit edit handle directly in the window extra bytes.
      user32: Split the handling of the 16-bit messages out of the edit winproc.
      user32: Split the handling of the 16-bit messages out of the button winproc.
      user32: Split the handling of the 16-bit messages out of the combo winproc.
      user32: Split the handling of the 16-bit messages out of the listbox winproc.
      user32: Split the handling of the 16-bit messages out of the scrollbar winproc.
      user32: Split the handling of the 16-bit messages out of the static winproc.
      user32: Move SystemParametersInfo16 to user16.c.
      user32: Remove the no longer used WINPROC_CallDlgProc16 function.
      user32: Move Get/SetWindowLong16 implementation to wnd16.c.
      gdiplus/tests: Fix parentheses in the expect() macro.
      winex11: Make GetKeyboardLayoutName() use the same default layout as GetKeyboardLayout().
      user32: Return failure in WaitForInputIdle if we can't open the idle event.
      user32/tests: Add a number of tests for WaitForInputIdle.
      user32: Implement UserRegisterWowHandlers function and add a handler for the button winproc.
      user32: Turn the combobox winproc into a Wow handler.
      user32: Turn the listbox winproc into a Wow handler.
      user32: Turn the edit winproc into a Wow handler.
      user32: Turn the scrollbar winproc into a Wow handler.
      user32: Turn the static winproc into a Wow handler.
      user32: Add 16-bit translation for parameters of the WM_H/VSCROLL edit messages.
      user32: Move more 16-bit winproc functions inside the i386 ifdef.
      user32: Store the 16-bit winproc in a different array from the 32-bit A/W ones.
      user32: Move 16-bit winproc functions to msg16.c.
      user32: Move the 16-bit message mapping functions to msg16.c.
      user32/tests: Fix a number of message test failures on various Windows boxes.
      user32: Add a Wow handler for the mdi client class.
      user32/tests: Always reset events when starting a WaitForInputIdle test.
      server: Don't set the idle event when a queue is destroyed, instead return success in WaitForInputIdle on process exit.
      server: Don't reset the idle event when the client stops waiting.
      server: Any thread can set the idle event, don't treat the first one differently.
      server: Don't set the idle event when waiting for a message reply.
      server: Set the idle event when retrieving a timer message.
      user32: Pre-allocate the window procedure for the button class.
      user32: Pre-allocate the window procedure for the combobox class.
      user32: Pre-allocate the window procedure for the edit class.
      user32: Get rid of the EDIT_winproc_handle variable.
      user32: Pre-allocate the window procedure for the listbox class.
      user32: Pre-allocate the window procedure for the scrollbar class.
      user32: Pre-allocate the window procedure for the static class.
      user32: Pre-allocate the window procedure for the dialog class.
      user32: Pre-allocate the window procedure for the MDI client class.
      user32: Pre-allocate the window procedure for DefWindowProc.
      mapi32: Fix a heap buffer overflow.
      user32: Move 16-bit instance normalization to CreateWindowEx16.
      user32: Move loading of the 16-bit window menu to CreateWindowEx16.
      user32: Use W structures in window creation code.
      user32: Move 16-bit window creation functions to 16-bit files.
      user32: Move the 16-bit menu functions to user16.c.
      user32: Move EnumProps16 to wnd16.c.
      user32: Pre-allocate the window procedure for the desktop class.
      user32: Pre-allocate the window procedure for the icon title class.
      user32: Pre-allocate the window procedure for the menu class.
      user32: Pre-allocate the window procedure for the message class.
      user32: Simplify window procedure allocation for the builtin classes.
      user32: Make WINPROC_AllocProc take a unicode flag for consistency with the other winproc functions.
      user32: Move wsprintf16 to user16.c.
      progman: Don't try to access the internals of an icon object.

Alistair Leslie-Hughes (2):
      shdocvw: Fix test for non-english IE MUI.
      mshtml: Implement IHTMLImgElement get_Name.

Amine Khaldi (6):
      crypt32: Remove unneeded assignments.
      crypt32: Remove an unneeded assignment.
      cryptdlg: Remove an unused variable.
      inetcomm: Remove an unneeded variable.
      mciseq: Remove unneeded assignments.
      mapi32: Remove an unneeded assignment.

Andrew Eikum (5):
      mshtml: Store ns[i]frame reference in HTMLFrameBase.
      mshtml: Implement IHTMLFrameBase::{get,put}_scrolling.
      mshtml: Implement IHTMLWindow2::{get,put}_onresize.
      mshtml: Implement IHTMLFrameBase::get_name.
      mshtml: Search content_window's properties in HTML[I]FrameBase::get_dispid.

Andrew Nguyen (2):
      dxdiagn: Initialize a structure size member before calling EnumDisplayDevicesW.
      clusapi: Don't trace the contents of output pointers.

André Hentschel (4):
      xcopy: Fix time acronyms in German translation.
      gdi32/tests: Also test non-style suffix.
      msvcrtd: Remove unnecessary trace output.
      mapi32: Add German resource.

Aric Stewart (9):
      mpr: Initialize handle to NULL on ERROR_NO_NETWORK case in WNetOpenEnum.
      shlwapi: Rename ConnectToConnectionPoint bAdviseOnly to fConnect as MSDN.
      shlwapi: Failure in IConnectionPoint_GetConnectionInterface does not prevent Invoking.
      shlwapi: DISPPARAMS on Invoke are never NULL.
      shlwapi: Release rgcd.pUnk returned by enumeration.
      shlwapi/tests: Testing framework and IConnection point tests.
      shlwapi: Ordinal 196 is SHVerbExistsNA not DnsRecordSetCompare.
      shlwapi: Beginning implementation of IUnknown_QueryServiceForWebBrowserApp.
      shlwapi: Implement SHPropertyBag_ReadLONG.

Aurimas Fišeras (1):
      mapi32: Add Lithunian translation.

Ben Peddell (1):
      server: Include user groups in file mode calculation when user is file owner.

Chris Schafer (1):
      msi/tests: Remove some barriers to running msi tests in parallel.

David Adam (1):
      d3dx9/tests: Check a relative error instead of an absolute error.

Eric Pouech (25):
      winedump: Rewrote a bit the COFF symbol table stuff.
      winedump: Dump PE symbols table if any.
      dbghelp: For mingw32 (stabs debug info), parse the FileHeader's symbol table to offset properly the global variables.
      dbghelp: Make the module enumeration process compatible with 64bit platforms.
      dbghelp: Fix a couple of casts on 64bit platforms.
      dbghelp: Rewrote the SymRegisterCallback function so that they work on a 64bit platform.
      dbghelp: Add ELF support but for the current 32 vs 64 bit architecture.
      dbghelp: Don't return error when validating a 64bit wide address on a 64bit platform.
      dbghelp: Enforce using 64bit integers for module's address and size.
      dbghelp: A couple of fixes for dwarf2 support on a 64bit platform.
      winedbg: Enforce 64bit modules address on 64bit platforms.
      winedbg: Ensure all addresses passed to break functions are 64bit wide.
      dbghelp: Force 64bit module enumeration on all platforms.
      winedbg: Added a couple of tweaks to properly support 32bit vs 64bit wide addresses.
      winedbg: For the x86_64 backend, fetch all the integral types.
      winedbg: Force 64bit line number information throughout the code to ease 64bit portability.
      winedbg: Fix some types for homogenous support on 64bit platform.
      winedbg: Allow internal (host) integral variables to hold 64bit value on 64bit platforms.
      winedbg: Added 'a' to the format supported in examine command (a stands for address).
      dbghelp: Fix module on which GetTypeFromName is done.
      dbghelp: Wrap the symt* <=> index transformations.
      dbghelp: Rewrite the symt* <=> index wrappers to that they work on 64bit platforms.
      winedbg: Implement breakpoint management for x86_64 targets.
      dbghelp: Fix symt_find_nearest so that it searches for 64bit addresses on 64bit platforms.
      dbghelp: Move the core of some line related functions to 64bit interface.

Eric van Beurden (2):
      dbghelp: Fix a minidump crash by using the correct variable.
      usp10: Change the header includes to pull in 'windows.h' instead of the component headers.

Erich Hoover (3):
      ws2_32: Separate out hostent creation from duplication.
      ws2_32: Return the full list of local IP addresses when gethostbyname() is called on the local hostname.
      ws2_32: Fix allocating a hostent with no h_aliases list.

Francois Gouget (8):
      winhttp: Fix compilation on systems that don't support nameless unions.
      mshtml/tests: Fix the get_event_src() macro declaration.
      wined3d: Don't define nameless structs or unions.
      crypt32/tests: Fix compilation on systems that don't support nameless unions.
      winedbg: Use SUBLANG_NEUTRAL for Spanish.
      shlwapi/tests: Make test_IConnectionPoint() static.
      mshtml/tests: Make test_UIActivate() static.
      oleaut32/tests: Make test_DispGetParam() static.

Gerald Pfeifer (1):
      ntdll: Guard debugging code by #ifdef instead of plain #if.

Gregor Schneider (2):
      mlang: Change EnumRfc1766_create return values to error codes.
      xcopy: Remove unneeded assignment.

Hans Leidekker (21):
      wininet: Cleanup any existing cache file before creating a new one.
      msi/tests: Loosen check on kernel32 language version.
      usp10: Fix a memory leak.
      userenv/tests: Fix some memory leaks.
      fusion: Fix some memory leaks.
      netapi32/tests: Fix a memory leak.
      ntdll/tests: Fix a memory leak.
      setupapi/tests: Fix a memory leak.
      ntdll/tests: Fix a memory leak.
      wininet/tests: Mark behavior of IE5 as broken for some ftp tests.
      ntdll/tests: Free Unicode string before reuse.
      gdi32: Implement WineEngGetCharABCWidthsFloat and forward GetCharABCWidthsFloat to it.
      rpcrt4: Add tests for RPC calls with authentication.
      rpcrt4: Avoid test failures on win9x.
      msi: Reject greater than and less than string comparisons in WHERE clauses.
      msi: Clone the open stream instead of trying to open a stream again.
      msi: Replace the string table hash with a sorted index.
      msi: Fix download of installer packages. Return errors from msi_download_file and copy_package_to_temp.
      msi: Reset the ALLUSERS property from to 2 to 1.
      msi: Avoid a crash in STREAMS_delete.
      msi: Propagate errors from IStorage_OpenStream again in db_get_raw_stream.

Henri Verbeet (50):
      d3d8: Fix GetDevice() for surfaces that are part of a texture.
      d3d9: Fix GetDevice() for surfaces that are part of a texture.
      dxgi: Add a separate function for surface initialization.
      dxgi: Implement IDXGISurface::GetDevice().
      dxgi: Implement IDXGISurface::GetParent().
      wined3d: Pass the correct vertex count in DrawIndexedPrimitiveStrided().
      wined3d: Rename the wined3d_adapter "num" field to "ordinal".
      wined3d: Remove the redundant "adapterNo" field from the device.
      wined3d: Rename the "wineD3D" device field to "wined3d".
      dxgi: The "unknown0" parameter to DXGID3D10CreateDevice() is a pointer.
      wined3d: Remove a few redundant assignments.
      d3d8: Forward the volume's GetDevice() to the texture instead of the wined3d volume.
      d3d9: Forward the volume's GetDevice() to the texture instead of the wined3d volume.
      wined3d: Remove unused GetDevice() implementations.
      wined3d: Only disable blending for offscreen targets.
      ddraw: Avoid enumerating display modes for formats that arent't supported anyway.
      wined3d: Don't restore the draw buffer in color_fill_fbo().
      wined3d: Rename "wineD3DDevice" to "device".
      wined3d: Support more formats for display mode enumeration.
      dxgi: Implement IDXGIOutput::GetDisplayModeList().
      wined3d: Properly invalidate the context's draw buffer in color_fill_fbo().
      wined3d: Correctly calculate the extended style in IWineD3DDeviceImpl_RestoreWindow().
      wined3d: Add a separate function for swapchain initialization.
      wined3d: Move IWineD3DDeviceImpl_SetupFullscreenWindow() to swapchain.c.
      wined3d: Move IWineD3DDeviceImpl_RestoreWindow() to swapchain.c.
      d3d10core: Add a stub ID3D10Query implementation.
      wined3d: Let the context handle the draw buffer in stretch_rect_fbo().
      wined3d: Let the context handle the draw buffer in flush_to_framebuffer_drawpixels().
      wined3d: Let the context handle the draw buffer in fb_copy_to_texture_hwstretch().
      wined3d: Let the context handle the draw buffer in swapchain_blit().
      wined3d: Send window messages through the swapchain before sending them to the application.
      wined3d: Filter window messages generated by switching to fullscreen and back.
      d3d9: Add a test to show D3D replaces the window proc.
      d3d8: Add a test to show D3D replaces the window proc.
      wined3d: Use surface_is_offscreen() in context_apply_draw_buffer().
      wined3d: Use surface_is_offscreen() in fb_copy_to_texture_hwstretch().
      wined3d: Use surface_is_offscreen() in read_from_framebuffer_texture().
      wined3d: Use surface_is_offscreen() in flush_to_framebuffer_drawpixels().
      wined3d: Get rid of the "swapchain" parameter to surface_get_gl_buffer().
      wined3d: Mark the draw buffer as dirty in context_create().
      ddraw/tests: Add tests for ddraw window proc handling.
      wined3d: Change an ERR to a TRACE in IWineD3DEventQueryImpl_GetData().
      wined3d: Change an ERR to a WARN in IWineD3DVolumeImpl_UnlockBox().
      wined3d: Cleanup IWineD3DDeviceImpl_GetBackBuffer().
      msi: Remove an unused field from the string table.
      ddraw: Don't depend on IWineD3DDevice_CreateSurface() not touching the surface parameter on failure.
      wined3d: Don't touch "ppSurface" on failure in IWineD3DDeviceImpl_CreateSurface().
      wined3d: Add a function to destroy dummy textures.
      wined3d: Add some error handling to create_primary_opengl_context().
      wined3d: IWineD3DStateBlockImpl no longer implements IWineD3DBase.

Huw Davies (35):
      winhttp: Load X509_STORE_CTX_get_ex_data from libcrypto not libssl.
      gdiplus: Fix a couple of memory leaks.
      inetcomm: Fix memory leak.
      oleaut32: Fix a couple of memory leaks in the tests.
      oleaut32: Fix several memory leaks in tests.
      ntdll: Fix a few memory leaks in tests.
      setupapi: Fix memory leak.
      xinput1_3: Don't print the contents of [out] parameters.
      ntdll: Only free the string if the test succeeded.
      msxml3: Correctly test the variant returned by get_nodeValue.
      include: Add a few guids.
      ole32: Release the error info strings.
      oleaut32: Fix double-free in tests.
      fusion: Fix a memory leak in the tests.
      shdocvw: Fix a memory leak in the tests.
      oleaut32: Fix a memory leak in the tests.
      browseui: Fix several memory leaks in the tests.
      gdiplus: Fix a memory leak.
      riched20: Fix a memory leak.
      gdiplus: Fix a memory leak in the tests.
      gdiplus: Fix a memory leak in the tests.
      gdiplus: Fix a memory leak in the tests.
      riched20: Initialise the style flags.
      oleaut32: Fix a memory leak in the tests.
      oleaut32: Fix a leak in the tests.
      qedit: Fix a memory leak.
      dbghelp: Fix compilation on OSX.
      ole32: Fix several memory leaks in the tests.
      oleaut32: Fix memory leaks in the tests.
      oleaut32: Fix a memory leak.
      shell32: Fix a memory leak in the tests.
      riched20: Initialise window size.
      shell32: Fix a memory leak.
      oleaut32: Fix several memory leaks in the tests.
      dsound: Fix a memory leak in the tests.

Jacek Caban (30):
      mshtml: Don't pass fdexNameEnsure flag to script engines in find_global_prop.
      mshtml: Added test for setting VT_EMPTY event handler.
      jscript: Don't pass EXPR_NEWREF flag to evaluate member expression in array_expression_eval.
      jscript: Moved set_last_index call to do_regexp_match_next.
      jscript: Fixed String.split for missing regexp separator.
      mshtml: Added IHTMLDocument2::onreadystatechange property implementation.
      wininet: Correctly handle dwContentRead for gzip encoded requests.
      wininet: lpszUrlPath should be NULL for URLs in file:///... format.
      wininet: Make InternetCrackUrlA tests more generic and add more tests.
      wininet: Set lpszUrlPath in InternetCrackUrlW if its length is 0.
      urlmon: Include extra info in object name passed to HttpOpenRequest.
      mshtml: Added IHTMLDOMTextNode::get_length implementation.
      mshtml: Removed ref count tests that fail on some Windows.
      jscript: Reorder functions in function.c.
      jscript: Added Function constructor implementation.
      jscript: Added Function constructor tests.
      jscript: Fixed tests on some Windows.
      mshtml: Added IHTMLStyle::marginTop implementation.
      mshtml: Added IHTMLStyle2::right implementation.
      wininet: Directly return error status from HTTP_HttpQueryInfoW.
      urlmon: Pass flags to test_BindToStorage.
      urlmon: Added support for BINDSTATUS_REDIRECTING.
      urlmon: Correctly handle accept ranges in HttpProtocol_open_request.
      urlmon: Correctly handle INTERNET_STATUS_REDIRECT.
      urlmon: Added HTTP redirecting test.
      urlmon: Report redirected URL to object created by BindToObject.
      mshtml: Added support for redirected binding.
      urlmon: Fixed race in tests.
      wininet: Make sure to not read over chunk end in read_gzip_data.
      mshtml: Don't use necko nsIHttpChannelInternal implementation in nsChannel object.

Jaime Rave (1):
      winedbg: Add Spanish translation.

James Hawkins (48):
      oleaut32: Add tests for DispGetParam. Fix two issues that crashed the tests.
      oleaut32: Report the parameter index for any failure in DispGetParam.
      msi: Add more tests for the Installer.OpenPackage method.
      msi: It's possible to send in more than two parameters to Installer.OpenPackage, but sending in zero parameters should return DISP_E_TYPEMISMATCH.
      msi: Verify that the first parameter to Installer.OpenPackage is a VT_BSTR.
      msi: The second parameter to Installer.OpenPackage is optional, so set a default value of 0 if the parameter is not provided.
      msi: Make sure to free the extra row data when deleting a row.
      msi: Free the column info data when updating the table column info.
      msi: Add a NULL terminator to file->dest after reallocation.
      msi: Fix a handle leak in the record tests.
      msi: Close the original record before copying new data into it.
      msi: Stub out a few more Installer object methods.
      msi: Refactor the Installer.CreateRecord method into InstallerImpl_CreateRecord.
      msi: Refactor the Installer.OpenPackage method into InstallerImpl_OpenPackage.
      msi: Refactor Installer.OpenProduct and Installer.OpenDatabase into respective functions.
      msi: Refactor the Installer.SummaryInformation method to InstallerImpl_SummaryInformation.
      msi: Refactor the Installer.UILevel method into InstallerImpl_UILevel.
      msi: Refactor the remaining Installer object stub methods into respective functions.
      msi: Refactor the Installer.InstallProduct method into InstallerImpl_InstallProduct.
      msi: Refactor the Installer.Version method into InstallerImpl_Version.
      msi: Refactor the Installer.RegistryValue method into InstallerImpl_RegistryValue.
      msi: Refactor the Installer.ProductState method into InstallerImpl_ProductState.
      msi: Refactor the Installer.ProductInfo method into InstallerImpl_ProductInfo.
      msi: Refactor the Installer.Products method into InstallerImpl_Products.
      msi: Refactor the Installer.RelatedProducts method into InstallerImpl_RelatedProducts.
      msi: Wine fails the test and passes us a Session object back, so free it in this case.
      msi: Make sure we don't access pcchValueBuf when szBuffer is NULL, as pcchValueBuf is not required to be initialized in this case.
      msi: Don't free str until the last instance of its use.
      msi: Free each stream name when deleting the streams view.
      msi: Store the number of types we queried. We were leaking these types because we didn't have the correct count.
      msi: Free each storage name when deleting the storages view.
      msi: Fix a record handle leak.
      msi: Implement DROP_delete that deletes the drop view. We were leaking the view before.
      msi: Free the Streams and Storages view object in their respective delete methods.
      msi: Free each table object when deleting the join view.
      msi: Free the enumeration data returned by IEnumSTATSTG_Next.
      msi: Keep track of the current view in the sql parser.
      msi: Free the join view if we fail to create the table view.
      msi: Fix a leaking record handle.
      msi: Free the columns view if check_column_exists fails.
      msi: Simplify ITERATE_WriteEnvironmentString.
      msi: Refactor freeing the import sql strings.
      msi: Free the temp buffer if we haven't assigned it to *appValue.
      msi: Free the cached streams when closing the database.
      msi: Move MSITRANSFORM and MSISTREAM and associated methods to the dabatase implementation file as they are database objects/methods.
      kernel32: Free the resource data if a matching resource exists and we choose not to overwrite the existing resource.
      msi: Initialize type. If the value did not exist, type was uninitialized and passed to RegSetValueExW.
      msi: Free the current filename if we choose to not extract the file.

Jeremy White (6):
      usrmarshal: Add a test for marshalling a SAFEARRAY of VT_BSTR.
      oleaut32/tests: Avoid a memory leak; spotted by Valgrind.
      oleaut32/tests: Check the actual size of safe arrays marshaled, not just projected size.
      oleaut32: Use wire sizes for marshaled safe arrays of bstrs and variants; fixes a test failure on win64.
      winspool: Add tests for paths returned in GetPrinterDriver.
      oleaut32/tests: Adjust new tests to pass on win9x platforms.

Juan Lang (51):
      winhttp: Use sk_ functions rather than accessing an OpenSSL stack type directly.
      crypt32/tests: Don't pass as a parameter a variable that could be local.
      rsaenh: Fix memory leak in CPSignHash.
      crypt32/tests: Fix memory leak in test.
      rsaenh/tests: Fix memory leaks.
      wintrust: Fail to load a certificate from a PE file if the certificate entry isn't a known type.
      inetmib1: Don't claim a value is dynamic when it isn't.
      inetmib1: Return error value from MIB copy functions.
      inetmib1: Return SNMP_ERRORSTATUS_NOSUCHNAME for an interface's physical address if it has none.
      snmpapi: Add stub for SnmpSvcGetUptime.
      wininet: Trace more parameters to HTTP_GetCustomHeaderIndex.
      wininet: Fix an apparent typo.
      winhttp: Fix test error when run as non-administrator.
      crypt32: Compare CRL's authority key identifier against the certificate's subject key identifier property, which also decodes the certificate's extension if necessary.
      rsaenh/tests: Fix memory leak.
      inetmib1: Return SNMP_ERRORSTATUS_NOSUCHNAME for an interface's description if it has none.
      inetmib1: Copy an IP net row's physical address using a type-specific helper function, rather than using a generic helper function which made an invalid alignment assumption.
      rsaenh: Use helper function to release and install a key into a crypt provider.
      rsaenh: Free a verify context's keys when it's destroyed.
      winhttp/tests: Only free a certificate context if retrieving it succeeded.
      rsaenh: Fix memory leak reading stored keys.
      crypt32: Trace chain final error status.
      crypt32: Don't dereference an output pointer which may be NULL.
      crypt32: Fix CertAddCRLContextToStore for CERT_STORE_ADD_USE_EXISTING add disposition.
      crypt32: Fix CertAddCTLContextToStore for CERT_STORE_ADD_USE_EXISTING add disposition.
      advapi32/tests: Fix memory leaks in tests.
      crypt32: Accept end certificates with no extended key usage extension if a particular key usage is requested.
      winhttp: Free OpenSSL error strings at unload.
      winhttp: Don't call a function whose result is never used.
      winhttp/tests: Skip secure connection tests if the request fails.
      wininet: Don't unnecessarily convert hostname to ANSI to check it.
      wininet: Free OpenSSL error strings at unload.
      wininet: Store hostname for secure connection in its SSL context.
      wininet: Set callback to verify hostname with peer's certificate.
      wininet: Check the certificate in an https connection using the crypto api.
      winhttp: Return error directly from netconn_verify_cert.
      winhttp: Set error and fail if a secure connections certificate couldn't be verified.
      wininet: Return error directly from netconn_verify_cert.
      wininet: Set error and fail if a secure connection's certificate couldn't be verified.
      cryptnet: Use helper function to verify a certificate's revocation.
      cryptnet: Change guard variable to simplify loop.
      cryptnet: Use helper function to check a cert against a CRL.
      cryptnet: If the caller specifies the location of a CRL, check a cert's revocation status against it.
      cryptnet: Make sure an issuer certificate can sign CRLs before looking for a CRL.
      cryptnet: Use helper function to get a URL from a CRL distribution points extension.
      cryptnet: Use helper function to check revocation with a CRL distribution points extension.
      cryptnet: Add stub for verifying revocation via OCSP.
      ole32: Fix a memory leak.
      crypt32: Check authority key identifer extension to determine if a certificate is self-signed.
      wintrust: Check authority key identifer extension to determine if a certificate is self-signed.
      setupapi: Fix a comment typo.

Jörg Höhle (3):
      mciwave: MCI Capability returns number of wave devices.
      mciavi: Complete MCI GetDevCaps/capability.
      mciavi: Do not stub unsupported recording or editing functions.

Ken Thomases (3):
      kernel32: On Mac, construct locale string from language and country codes.
      kernel32: Mac lang. pref. overrides LANG, but not LC_ALL or LC_MESSAGES.
      kernel32: Consolidate some related code closer together.

Kirill K. Smirnov (1):
      comctl32/treeview: Avoid a NULL pointer dereference.

Lei Zhang (1):
      secur32: Fix memory leak in SECUR32_addPackages.

Luke Benstead (1):
      ddraw: Fix an incorrect refcount test.

Maarten Lankhorst (18):
      include: Add some definitions to ks.h.
      include: Fix typo in audiopolicy.
      dsound: Move buffer property sets to buffer.c.
      include: Add mmdeviceapi.idl.
      dsound: Implement DSPROPERTY_WaveDeviceMappingA on top of *W.
      dsound: Clean up DSPROPERTY_DescriptionW.
      dsound: Clean up DSPROPERTY_EnumerateW.
      dsound: Clean up DSPROPERTY_EnumerateA.
      dsound: Clean up DSPROPERTY_Enumerate1.
      dsound: Clean up DSPROPERTY_DescriptionA.
      dsound: Clean up DSPROPERTY_Description1.
      dsound: Only initialize one guid for capture and renderer.
      mmdevapi: Add initial mmdevapi dll.
      mmdevapi: Add some initial tests.
      mmdevapi: Add more tests.
      mmdevapi: Add class factory.
      dsound: Remove refcounting in classfactory.
      include: Add endpointvolume.idl.

Marcin Baczyński (5):
      gdiplus: Add missing declarations for image.c.
      gdiplus: Add missing declarations for imageattributes.c.
      gdiplus: Add missing declarations for gdiplus.c.
      gdiplus: Add missing declarations for pen.c.
      gdiplus: Add missing declaration for customlinecap.c.

Marcus Meissner (10):
      rpcrt4: Fixed array_compute_and_size_conformance on strings (Coverity).
      reg: Fixed 2 functionality bugs in REG DELETE (Coverity).
      winhttp: Check for endCert being NULL (Coverity).
      dbghelp: Add a missing NULL check (Coverity).
      jscript: Fixed uninitialized usage of i (Coverity).
      dmime: Actually get a pCLSID stream before using it (Coverity).
      dmloader: pObject NULL checks are not necessary (Coverity).
      dbghelp: Check for NULL return from process_find_by_handle (Coverity).
      ntdll: Check for NULL attr in NtOpenKey (Coverity).
      rpcrt4: Exit on unknown confirmance type (Coverity).

Michael Stefaniuc (1):
      winex11: Fix missing unlock & free on an error path (Smatch).

Nathan Gallaher (1):
      ole32: Fix invalid memory access in storage32.

Nicolas Le Cam (2):
      ddraw/tests: Get rid of a carriage return in a trace.
      winedbg: Fix Norwegian translation warning by adding UTF-8 pragma.

Nikolay Sivov (26):
      kernel32/tests: Fix test failures on NT4.
      comctl32/treeview: Free items pointer array and root item on control destruction.
      comctl32/tests: Free imagelist after use.
      comctl32/tests: Don't forget to free array after tests.
      comctl32/datetime: Free internal data completely on control destruction.
      gdiplus/tests: Free brush pointer after test.
      gdiplus/tests: Additional test to show that custom cap isn't created without stroke path.
      gdiplus/tests: Free created iterator in tests.
      gdiplus/tests: Delete Pen object after use.
      msvcrt/tests: Free temporary file name after test.
      windowscodecs/tests: Release decoder after use.
      gdiplus/tests: Fix a matrix leak in test.
      comctl32/listview: Update item width every time new item is inserted.
      shell32: Fix some trace typos.
      comctl32/treeview: Use additional helper for item invalidation.
      comctl32/treeview: Remove some forward declarations.
      comctl32/tests: Get rid of static handles, split tests finally.
      comdlg32/filedlg: Fix a lookin combo data leak.
      comdlg32/filedlg: Fix a find file handle leak.
      oleaut32/tests: Fix a couple of leaks in tests.
      comctl32/treeview: Fix mouse tracking request code.
      comctl32/treeview: Fix default colors set on creation.
      comctl32/treeview: Draw +/- signs with text color, not the lines' one.
      comctl32/treeview: Implement NM_SETCURSOR notification.
      kernel32/tests: Fix few context leaks.
      kernel32: Fix typo in a comment.

Owen Rudge (11):
      imagehlp: Implement ImageRemoveCertificate.
      imagehlp/tests: Add tests for adding/removing multiple certificates.
      imagehlp: Check for 64-bit PE files in CheckSumMappedFile.
      imagehlp: Recalculate PE checksum after file modification.
      include: Redefine LHANDLE as ULONG_PTR.
      mapi32: Correct the Simple MAPI parameters.
      winemapi: Add skeleton for new Wine MAPI provider.
      winemapi: Add Simple MAPI functions.
      winemapi: Implement MAPISendMail.
      wine.inf: Add winemapi.dll to the mail clients section.
      mapi32: Remove fallback procedure in MAPISendMail and replace with error message.

Paul Chitescu (3):
      advapi32: Reduce registry access to MAXIMUM_ALLOWED wherever possible.
      services.exe: Reduce Registry access to KEY_READ or MAXIMUM_ALLOWED wherever possible.
      server: Only check if permission bits changed before calling fchmod().

Paul Vriens (26):
      advapi32/tests: Fix some test failures when the computername is fully qualified.
      mshtml/tests: Skip some tests on older IE.
      adapi32/tests: Fix test failures when the computername is fully qualified on W2K3 and earlier.
      winspool.drv/tests: Fix test failures on XP+ with long printer names.
      shell32/tests: Cope with non-English Vista+ and short names in the title bar of explorer windows.
      shell32/tests: Decide whether to use CSIDL_PROGRAMS or CSIDL_COMMON_PROGRAMS by checking admin rights.
      shell32/tests: Removed an unused define.
      shell32/tests: Remove a now unused define.
      shell32/tests: Remove a useless string.
      imagehlp/tests: Run tests again on Win95.
      ole32/tests: Don't crash on Win9x/WinMe by using more A-functions.
      ddraw/tests: Fix some test failures on Vista+.
      comctl32/tests: Fix a test failure on older comctl32.
      shell32/tests: Fix a test failure on a default Windows 7 system.
      kernel32: Add a define for UNICODE_STRING_MAX_CHARS.
      kernel32/tests: Only set the size ourselves if we are on W2K.
      comctl32/tests: Fix some test failures on older comctl32.
      rpcrt4/tests: Don't crash on NT4.
      rpcrt4/tests: Skip more tests on Win9x/WinMe.
      gdiplus/tests: Fix some test failures on older gdiplus.
      cryptnet/tests: Fix some test failures on W2K with just SP3 or SP4.
      ntdll/tests: Fix a test failure on NT4/W2K.
      ntdll/tests: Fix a memory leak (Valgrind).
      kernel32: Fix a crash with GetLongPathNameW and UNC path names.
      kernel32/tests: Add some tests for GetLongPathNameW.
      gdiplus/tests: Fix a test failure on XP/W2K3.

Piotr Caban (22):
      msxml3: Fix VARIANT_from_xmlChar implementation.
      mshtml: Added PersistStreamInit_InitNew implementation.
      mshtml: Added OleObject_Advise implementation.
      mshtml: Added OleObject_Unadvise implementation.
      mshtml: Added OleObject_EnumAdvise implementation.
      mshtml: Added OleObject_Advise tests.
      mshtml: Added Advise handling to OleObject_Close.
      mshtml: Improved OleDocumentView_UIActivate implementation.
      mshtml: Added more OleDocumentView_UIActivate tests.
      urlmon: Added ProxyStub implementation.
      urlmon: Added InternetSecurityManager marshalling test.
      mshtml: Added ViewObjectEx stub implementation.
      mshtml: Added IObjectWithSite stubs.
      oleaut32: Fix SysReAllocStringLen implementation.
      mshtml: Added IElementBehavior{Site,Factory} to idl file.
      shlwapi: Allow ' ' in hostname and password in UrlGetPart.
      shlwapi: Added special case for URL_PART_HOSTNAME in UrlGetPart.
      urlmon: Added PARSE_DOMAIN to CoInternetParseUrl.
      urlmon: Added PARSE_ROOTDOCUMENT to CoInternetParseUrl.
      urlmon: Added CoInternetGetSecurityUrl implementation.
      urlmon: Added tests for CoInternetGetSecurityUrl.
      urlmon: Remove some CoInternetParseUrl tests.

Rob Shearman (21):
      ole32: Initialise all of position variables in test_save_load_filemoniker.
      ole32: Add tests for HGLOBAL stream ignoring the HighPart of the offset for seeks.
      netapi32: Fix off-by-one errors in ACCESS_QueryAdminDisplayInformation and ACCESS_QueryGuestDisplayInformation.
      hlink: Fix more memory leaks in tests.
      secur32: Fix memory leak in NTLM's FreeCredentialsHandle.
      rpcrt4: Fix some memory leaks in the cstub tests.
      rpcrt4: Add support for context handles in stubless servers.
      rpcrt4: Handle [out]-only non-conformant strings in stubless servers.
      rpcrt4: Implement RpcServerRegisterAuthInfoA/W.
      rpcrt4: Fix rpcrt4_conn_tcp_read and rpcrt4_conn_tcp_write for reading/writing zero-sized data.
      rpcrt4: Add support for server-side authentication.
      rpcrt4: Process control packets in the server synchronously to avoid races when using 3-factor authentication.
      rpcrt4: Allow the connection to override the authentication mechanism for a connection type.
      rpcrt4: Override authentication functions for ncalrpc protocol to do nothing.
      rpcrt4: Implement client impersonation.
      rpcrt4: Allow the authentication details of the client to be transport-specific.
      rpcrt4: Override inquire_auth_client for ncalrpc transport to always indicate that the connection is authenticated.
      gdi32: Fix memory leaks on EMF_Create_HENHMETAFILE failure.
      msvcrt: Free memory allocated in TLS slot on module unload as well as thread exit.
      cabinet: Fix memory leaks on failure in FDICopy.
      ntdll: Ignore the hole in the FILE_PIPE_WAIT_FOR_BUFFER structure passed into NtFsControlFile before writing the structure to the server.

Roderick Colenbrander (4):
      ws2_32: Use winediag for socket failures.
      iphlpapi: Use winediag for icmp failure.
      winex11: Move X11 display failure MESSAGE to winediag.
      wined3d: Fix a bug in BtlFast which was uncovered by the 32-bit dibsection support.

Stefan Dösinger (10):
      wined3d: Add a function for initializing surface sysmem.
      wined3d: A function for checking if a surface is offscreen.
      wined3d: Use GL_COLOR_ATTACHMENT0 as offscreen buffer with FBOs.
      wined3d: Infrastructure to render swapchains to a FBO.
      wined3d: Render to a FBO if the window size is changed.
      Render to fbo when the size mismatches at creation time.
      wined3d: Frontbuffers are onscreen.
      wined3d: Properly release client storage memory.
      wined3d: Don't render single buffered swapchains to a FBO.
      wined3d: Fix VBO buffer usage.

Stefan Leichter (2):
      setupapi32/tests: More tests for SetupGetInfFileListW.
      setupapi: Implement SetupGetInfFileListW.

Vincent Povirk (50):
      windowscodecs: Accept GIF files with no trailer.
      ole32: Make CreateDirEntry a virtual method.
      ole32: Change WriteDirEntry return type to HRESULT.
      ole32: Change ReadDirEntry return type to HRESULT.
      ole32: Add WriteDirEntry to the storage vtable.
      ole32: Add ReadDirEntry to the storage vtable.
      gdiplus: Implement GdipCloneBitmapArea.
      gdiplus: Fix cleanup after errors in GdipCloneImage.
      ole32: Change the base IStorage filename to a pointer type.
      ole32: Take a StorageBaseImpl in insertIntoTree.
      ole32: Take a StorageBaseImpl in removeFromTree.
      ole32: Add DestroyDirEntry to the storage vtable.
      ole32: Use the storage vtable to read streams.
      ole32: Use the storage vtable to write to streams.
      ole32: Use the storage vtable to resize streams.
      ole32: Don't track the stream size in storage stream objects.
      ole32: Store the parent of internal storage objects.
      ole32: Add an attribute to StorageBaseImpl to track its reverted status.
      ole32: Add a test for modifying read-only substorage objects.
      ole32: Don't use ancestorStorage to decide if a storage is transacted.
      ole32: Make findElement take a StorageBaseImpl.
      ole32: Make IEnumSTATSTGImpl reference the parent storage.
      ole32: Remove the ancestorStorage attribute.
      wineboot: Do not force --kill when --end-session is set.
      wineboot: Terminate processes immediately after WM_ENDSESSION.
      ole32: Create internal storage objects with a refcount of 1.
      ole32: Add Invalidate to the storage vtable.
      ole32: Add a stub transacted storage type.
      ole32: Implement transacted storage.
      ole32: Implement Revert for transacted storage objects.
      winex11.drv: Use the old method to delete the desktop window.
      include: Add PaletteFlags enumeration.
      gdiplus: Implement GdipSetImagePalette.
      gdiplus: Implement GdipGetImagePaletteSize.
      gdiplus: Implement GdipGetImagePalette.
      gdiplus: Initialize the palettes of new indexed bitmaps.
      gdiplus: Add test for image palette functions.
      ole32: Fix a memory leak in StorageBaseImpl_CopyTo.
      ole32: Remove an unnecessary special case in StorageBaseImpl_CopyTo.
      ole32: Properly free temporary objects when StorageBaseImpl_CopyTo fails.
      shell32: Fix an uninitialized memory access in SHGetFileInfoW.
      shell32: Fix a memory leak in a test.
      windowscodecs: Fix a memory leak in a test.
      gdiplus: Explicitly copy the bits from dib sections to new bitmaps.
      gdiplus: Support reading image data from device-dependent bitmaps.
      ole32: Add a cache for block chain streams in StorageImpl.
      ole32: Compare upper character values directly in entryNameCmp.
      ole32: Fix memory leaks in the storage test.
      shell32: Fix a memory leak in SHFileOperationW.
      gdiplus: Add tests for the other frame functions, for memory bitmaps.

Vladimir Pankratov (1):
      setupapi: Add stub for CM_Get_Device_ID_ExW.

Wolfram Sang (1):
      ntoskrnl: Add IoAllocateErrorLogEntry stub.

--
Alexandre Julliard
julliard@winehq.org
