This is release 0.9.38 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - Beginnings of support for copy protection kernel drivers.
  - More MSI automation support.
  - Many 64-bit compilation fixes.
  - A number of OLE fixes.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.38.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.38.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 or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

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

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

Changes since 0.9.37:

Alexander Nicolaysen Sørnes (8):
      wordpad: Add program icon.
      shell32: Update Norwegian Bokmål resources.
      msi: Update Norwegian Bokmål resources.
      regedit: Update Norwegian Bokmål resources.
      credui: Add Norwegian Bokmål resources.
      localui: Add Norwegian Bokmål resources.
      shdoclc: Update Norwegian Bokmål resources.
      cmd: Update Norwegian Bokmål resources.

Alexandre Julliard (41):
      ntoskrnl.exe: Initial stub version with forwards to existing functions.
      hal: Added an initial stub.
      include: Add a few definitions in wdm.h.
      ntoskrnl.exe: Implemented IoCreateDevice and IoDeleteDevice.
      ntoskrnl.exe: Implemented IoCreateSymbolicLink.
      ntoskrnl.exe: Export KeServiceDescriptorTable and KeTickCount.
      ntoskrnl.exe: Added IofCompleteRequest.
      ntdll: Reimplement LdrGetDllHandle to use the same search algorithm as LdrLoadDll.
      ntdll: Implemented LdrAddRefDll.
      kernel32: Support incrementing the module refcount in GetModuleHandleEx.
      kernel32: Check for already loaded module also for LOAD_LIBRARY_AS_DATAFILE.
      ntoskrnl.exe: Implemented a number of memory allocation functions.
      ntoskrnl.exe: Export a Wine-internal function to run the device request handling loop.
      ntoskrnl.exe: Implemented PsGetVersion and added stubs for a couple of other Ps functions.
      winedevice: Add a service process that loads and runs a kernel driver.
      advapi32: Launch winedevice.exe when asked to start a kernel driver service.
      ntoskrnl.exe: Reuse the kernel32 instruction emulation support for kernel-mode drivers.
      ntoskrnl.exe: Implemented a couple of time-related APIs.
      ntdll: Setup the shared user data structure at 0x7ffe0000.
      ntdll: Avoid overflows in heap allocations. Based on a patch by Rob Shearman.
      Fix a couple of overflowing heap allocations revealed by the previous change.
      server: Don't allow a waitable timer to be set to expire in the past.
      winebuild: Set the IMAGE_FILE_EXECUTABLE_IMAGE flag for all modules.
      msxml3: Fixed compilation without libxml.
      schannel: Use FIELD_OFFSET instead of offsetof.
      wininet: Fixed compilation without SSL.
      libwine: Add support for glyph chars mapping in OEM codepage tables.
      kernel32: Remove the fixme about MB_USEGLYPHCHARS.
      dmusic: Fix license headers that mistakenly use GPL instead of LGPL.
      winedos: Merge a number of tiny source files into interrupts.c.
      kernel32: Store global arena base as a pointer.
      ws2_32: Avoid memory allocations for sockaddr conversion.
      ws2_32: Reimplement WSARecvFrom along the lines of NtReadFile.
      ws2_32: Store the local iosb in the ws2_async structure to avoid a memory allocation.
      include: Fix the definition of MSG_MAXIOVLEN.
      ws2_32: Allocate iovec buffers statically using MSG_MAXIOVLEN.
      ntdll: Report end of file instead of broken pipe on char devices.
      ws2_32: Re-enable FD_READ also when returning EWOULDBLOCK from WSARecvFrom().
      ws2_32: Don't modify last error in async I/O callback.
      ntdll: Preserve errno across system calls done in the suspend handler.
      user32: Fix a printf format warning.

Anatoly Lyutin (1):
      user32: mdi: Fix switch with wParam in WM_SYSCOMMAND processing.

Andrew Riedi (1):
      wined3d: Add hardware cursor support.

Andrew Talbot (45):
      advapi32: Fix a typo.
      msvcrt20: Exclude unused header.
      msvfw32: Exclude unused header.
      msvcrt: Exclude unused headers.
      msxml3: Exclude unused headers.
      ntdll: Exclude unused headers.
      netapi32: Exclude unused headers.
      ole32: Exclude unused headers.
      oledlg: Exclude unused header.
      oleaut32: Exclude unused headers.
      opengl32: Exclude unused header.
      quartz: Exclude unused headers.
      quartz: Exclude unused headers.
      qcap: Exclude unused headers.
      rpcrt4: Exclude unused headers.
      rsaenh: Exclude unused header.
      riched20: Exclude unused headers.
      secur32: Exclude unused headers.
      setupapi: Exclude unused headers.
      shell32: Exclude unused headers.
      shell32: Exclude unused headers.
      shell32: Exclude unused headers.
      user32: Exclude unused headers.
      user32: Exclude unused headers.
      user32: Exclude unused headers.
      user32: Exclude unused headers.
      vmm.vxd: Exclude unused headers.
      version: Exclude unused headers.
      uxtheme: Exclude unused headers.
      winealsa.drv: Exclude unused headers.
      ws2_32: Exclude unused headers.
      winmm: Exclude unused headers.
      mciwave: Constify a variable.
      mpr: Constify some variables.
      msdmo: Constify some variables.
      mscms: Constify some variables.
      msg711.acm: Constify some variables.
      wineps.drv: Exclude unused headers.
      wininet: Exclude unused headers.
      winex11.drv: Exclude unused headers.
      msacm32: Constify some variables.
      msacm32.drv: Constify some variables.
      msadp32.acm: Constify some variables.
      mshtml: Constify some variables.
      msi: Constify some variables.

Aric Stewart (1):
      comctl32: Trying to blend an image without a mask causes problem, especially if the background is white.

Damjan Jovanovic (2):
      ws2_32: Simplify some socket tests by adding a function that generates a pair of connected sockets.
      ws2_32: gethostbyname("") should work.

Dan Hipschman (11):
      widl: Remove an unnecessary assignment in write_pointers.
      widl: Handle pointers fields that point to structures.
      widl: Improve handling of offsets in the type format string.
      widl: Write some structures to the type format string on the fly.
      widl: Replace erroneously removed current_func assignment.
      widl: Lay framework for unions with simple unions working.
      rpcrt4: Fix test typo.
      widl: Handle pointers in unions.
      widl: Shrink type_t structure.
      widl: Allow types that reference themselves.
      rpcrt4: Fix build of test on Solaris by renaming a variable.

David Adam (6):
      d3drm: Implement D3DRMColorGetRed.
      d3drm: Implement D3DRMColorGetGreen.
      d3drm: Implement D3DRMColorGetBlue.
      d3drm: Implement D3DRMColorGetAlpha.
      d3drm: Implement D3DRMCreateColorRGBA.
      d3drm: Implement D3DRMCreateColorRGB.

Detlef Riekenberg (5):
      localui/tests: Add tests for ConfigurePortUI.
      serialui/tests: Remove unused string.
      localui/tests: Add tests for AddPortUI.
      localui/tests: Handle different results from XP.
      ddraw: Do not crash when Clipper is NULL.

Dmitry Timoshkov (38):
      user32: Add a test for CheckMenuRadioItem and make it pass under Wine.
      user32: Add a test for the menu resource loader, make it pass under Wine.
      kernel32: Add a test for LoadLibraryEx(LOAD_LIBRARY_AS_DATAFILE).
      user32: Remove duplicated code.
      kernel32: Print last error value as unsigned, printing error in hex is useless.
      kernel32: Add an overflow test for MultiByteToWideChar.
      widl: Fix compilation warnings in 64-bit mode.
      winebuild: Fix compilation warnings in 64-bit mode.
      winedump: Fix compilation warnings in 64-bit mode.
      include/wine/debug.h: Fix compilation warning in 64-bit mode.
      winex11.drv: Synchronize debug output between X11DRV_KeyEvent and X11DRV_ToUnicodeEx.
      basetsd.h: Add a bunch of PSDK compatible macros/inline functions for 64-bit safe type conversions.
      kernel32: Fix the size of ThreadAffinityMask to match PSDK.
      basetsd.h: Fix a typo in the parameter name.
      winternl.h: Make the fields of the PROCESS_BASIC_INFORMATION structure use same type width as a PSDK one.
      widl: Fix compilation warnings in 64-bit mode.
      ntdll: Fix compilation warnings in 64-bit mode.
      kernel32: Fix compilation warnings in 64-bit mode.
      comctl32/tests: Fix some problems revealed by compilation in 64-bit mode.
      kernel32/tests: Fix a problem revealed by compilation in 64-bit mode.
      user32/tests: Fix a problem revealed by compilation in 64-bit mode.
      winedbg: Fix a problem revealed by compilation in 64-bit mode.
      wine: Switch to using 'long' for INT_PTR type for 64-bit compatibility.
      gdi32: Perform consistency checks when loading an EMF, add a test case.
      oleaut32: Add support for loading and drawing metafiles.
      winebuild: Mark builtin DLLs as IMAGE_FILE_LARGE_ADDRESS_AWARE on a 64-bit platform.
      gdi32: Make SetDCHook 64-bit safe.
      gdi32: Fix compilation warnings in 64-bit mode.
      winex11.drv: Fix compilation warnings in 64-bit mode.
      kernel32: Fix some compilation warnings in 64-bit mode.
      user32: Fix some compilation warnings in 64-bit mode.
      atl: Fix compilation warnings in 64-bit mode.
      mcicda: Fix compilation warnings in 64-bit mode.
      mciseq: Fix compilation warnings in 64-bit mode.
      mciwave: Fix compilation warnings in 64-bit mode.
      midimap: Fix compilation warnings in 64-bit mode.
      mciavi32: Fix compilation warnings in 64-bit mode.
      comctl32: Fix a compilation warning in 64-bit mode.

Emmanuel Maillard (7):
      winecoreaudio: Initial mixer support on Mac OS X.
      winecoreaudio: Implement MIX_Open and MIX_GetNumDevs.
      winecoreaudio: Implement MIX_GetDevCaps.
      winecoreaudio: Initial implementation of MIX_GetLineInfo.
      winecoreaudio: Initial implementation of MIX_GetLineControls.
      winecoreaudio: Initial implementation of MIX_GetControlDetails.
      winecoreaudio: Initial implementation of MIX_SetControlDetails.

Erez Volk (1):
      ntdll: Added IDT Timezone (Israel daylight savings time).

Evan Stade (1):
      gdiplus: Added stub implementation of gdiplus.dll.

Francois Gouget (49):
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      winscard: Adding the missing SCARD_E_XXX and SCARD_W_XXX error codes.
      winscard: Add headers for the upcoming implementation of the winscard dll.
      mshtml: Fix '\n' typo.
      Assorted spelling fixes.
      ntdll: Fix compilation on systems that don't support nameless unions.
      direct3d: Remove misspelled constants as they exist correctly spelled.
      user32/tests: Fix compilation with gcc 2.95.
      msvcrt/tests: When compiling with Visual C++ 2005, one must define _CRT_NON_CONFORMING_SWPRINTFS otherwise swprintf() takes an extra parameter.
      msvcrt: Remove the S_ISXXX() macros as they are not present in the Visual C++ headers.
      msvcrt: When operating on a closed pipe, read() should return 0, not -1.
      port.h: Issue an error if port.h is included after the regular Wine headers.
      usp10/tests: Fix a signed/unsigned int mismatch.
      kernel32/tests: Fix a signed/unsigned int mismatch.
      msi/tests: Fix a signed/unsigned int mismatch.
      msvcrt/tests: Fix a signed/unsigned int mismatch.
      user32/tests: SWP_STATECHANGED is an undocumented flag so define it ourselves. Fixes compilation with the PSDK.
      shell32/tests: We need NTDDI_VERSION >= NTDDI_WINXPSP1 to get SEE_MASK_NOZONECHECKS with the PSDK.
      d3d9/tests: Fix compilation with Visual C++ 2005.
      kernel32/tests: src[i] is a char so there is no point trying to stuff 0xcafedead into it.
      comctl32/tests: The PSDK does not define ListView_InsertItemA() so don't use it.
      ddraw: Fix the name of DDSPD_IUNKNOWNPOINTER.
      In the PSDK HRESULT_FROM_WIN32() is now an inline function, and it is __HRESULT_FROM_WIN32() which is a macro.
      shell32/tests: With recent PSDKs, CSIDL_MYDOCUMENTS is a synonym for CSIDL_PERSONAL. So define our own constant.
      shlwapi/tests: The PSDK does not define IID_IDelayedRelease anymore.
      include: The PSDK does not define the DEFINE_SHLGUID() macro anymore.
      schannel: The PSDK defines no SECPKG_FUNCTION_TABLE_SIZE_* macro.
      schannel: Fix the name of the SetContextAttributes field of SECPKG_FUNCTION_TABLE.
      ddraw/tests: Fix compilation with Visual C++ 2005.
      rpcrt4/tests: Fix signed/unsigned and 32/64bit issues with the wiredatalen parameter.
      rpcrt4/tests: Fix a Visual C++ double to float conversion warning.
      setupapi/tests: There is no strncasecmp() on Windows. So use CompareString() instead.
      ntdll/tests: Remove an inappropriate const qualifier.
      gdi32/tests: Fix a signed/unsigned int mismatch.
      psapi/tests: Fix a signed/unsigned int mismatch.
      d3d8/tests: Fix the Visual C++ double to float conversion warnings.
      d3d9/tests: Fix the Visual C++ double to float conversion warnings.
      ddraw/tests: Fix the Visual C++ double to float conversion warnings.
      dsound/tests: Fix the Visual C++ double to float conversion warnings.
      oleaut32/tests: Fix the Visual C++ double to float conversion warnings.
      Assorted spelling fixes.
      oleaut32/tests: Remove redundant semi-colons.
      oleaut32/tests: Remove unneeded parentheses.
      oleaut32/tests: Fix the EQ_DOUBLE() and EQ_FLOAT() macros so they work no matter how large the values to compare are.
      oleaut32/tests: Convert some macros to functions.
      version: Fix the VerQueryValueA/W() prototypes.
      d3drm/tests: Fix the Visual C++ double to float conversion warnings.
      shell32/tests: Remove unneeded cast.
      oleaut32/tests: Improve vtstr() and variantstr().

Frank Richter (5):
      shdoclc: Update German translation.
      credui: Add German translation.
      shell32: Update German resources.
      cmd: Updated German translation.
      wordpad: Update German translation.

Hans Leidekker (4):
      setupapi: Implement pSetup{Get, Set}QueueFlags.
      setupapi: Correctly handle an empty filename in SetupGetSourceFileLocationA.
      setupapi: Add a partial implementation for SetupScanFileQueue{A, W}.
      setupapi: Don't require a valid version section for INF_STYLE_OLDNT files.

Huw Davies (14):
      oleaut32: Type references are global to the typelib.
      oleaut32: Typelib inheritance tests.
      oleaut32: Fix return value in the element not found case.
      oleaut32: GetRefTypeOfImplType(0) on TKIND_DISPATCH typeinfos should always return an href to IDispatch.
      oleaut32: Tests for more 'syntax 2' dispinterfaces.
      oleaut32: Test for interface that derives from IUnknown.
      oleaut32: Move the proxy thunk creation code to a separate function.
      oleaut32: non-dual dispinterfaces should be marshaled via IDispatch.
      oleaut32: Fix CreateDispTypeInfo to store the correct number of functions.
      oleaut32: Recurse through the impltype list so that dispinterfaces get the correct parents.
      oleaut32: SLTG references are only unique at the typeinfo level, so convert them to be unique to the typelib.
      winex11.drv: Merge some common code.
      winex11.drv: Use XRenderCompositeText instead of XRenderCompositeString.
      gdi32: Pass an lpDx array to the driver if the escapement is non-zero, so that the driver has access to the unrotated advance widths.

Hwang YunSong(황윤성) (1):
      xcopy: New Korean resource.

Jacek Caban (6):
      mshtml: Wrap nsIExternalProtocolHandler.
      mshtml: Don't call start_binding if we use necko to load the page.
      mshtml: Improve some exec command stubs.
      mshtml: Fixed AsyncOpen implementation for channels without associated document.
      mshtml: Added missing WINAPI in window proc.
      urlmon: There is no need to make slash conversion in BindToStorage as URL is already canonized in the constructor.

James Hawkins (15):
      msi: Remove a misleading ERR, as this fails if a file doesn't exist, which is common.
      msi: Add the ability to deformat the component's source.
      msxml3: Add initial implementation of IXMLElement and IXMLElementCollection.
      msxml3: Add initial implementation of IXMLDocument.
      msxml3: Add tests for IXMLElement and IXMLElementCollection.
      msxml3: Add tests for IXMLDocument.
      msi: Create the destination directory if it doesn't exist when duplicating files.
      msi: Fall back to checking if the cab exists if the volume name doesn't match.
      msi: Set the MsiNTProductType property.
      msi: Perform a forced reboot if a custom action returns ERROR_INSTALL_SUSPEND.
      msi: Implement the WriteEnvironmentStrings standard action.
      wintrust: Add stub implementations for CryptCATAdminAddCatalog and CryptCATAdminReleaseCatalogContext.
      msi: Add handling for MsiBreak.
      msi: Implement Installer::OpenDatabase.
      msi: Implement SummaryInfo::Property get.

Jeff Latimer (2):
      hnetcfg: Define icftypes.idl.
      hnetcfg: Add netfw.idl - Network Firewall interface.

Jeremy White (1):
      wininet: Mark Proxy Authorization header as a request header, so it actually gets sent.

José Manuel Ferrer Ortiz (2):
      winecfg: Updated Spanish translation.
      Some Spanish translations updated.

Juan Lang (9):
      crypt32: Don't set ret to TRUE when it already is.
      crypt32: Implement CertGetStoreProperty and CertSetStoreProperty.
      crypt32: Use public functions to get store access state.
      crypt32: Remove last error checks on success.
      wintrust: Implement WintrustGetRegPolicyFlags and WintrustSetRegPolicyFlags.
      oleaut32: Don't mix allocation routines.
      crypt32: Statically initialize static lists and critical sections.
      crypt32: Remove wrong test and parameter check.
      wincrypt: Fix typo.

Julien Muchembled (1):
      msvfw32: Fix enumeration of VFW video codecs that are registered in the registry.

Kai Blin (2):
      secur32: Downgrade WARN to TRACE, fix another TRACE.
      ws2_32: Make WS2_send trace more readble.

Kolbjoern Fredheim (1):
      wined3d: Implemented converting X1R5G5B5 format to R5G5B5A1 to emulate color-keying.

Louis Lenders (2):
      shell32: Update Dutch resource.
      comctl32: Add stub for DrawShadowText.

Maarten Lankhorst (6):
      winealsa: Remove dead code.
      dsound: Primary buffer isn't an IDirectSoundBuffer8.
      dsound: IDirectSound_Compact should return DS_OK on priolevel >= DSSCL_PRIORITY.
      mpr: Small fixes to WNetGetConnection.
      dsound: Block align SetCurrentPosition and add test for it.
      dsound: Fix stupid mistake.

Marcus Meissner (7):
      wined3d: Fixed swapchain context NULL ptr checks.
      ddraw/tests: Check for failing to create surfaces.
      shell32: Avoid potential 1 byte overflow.
      kernel32: Skip modem status tests if GetModemStatus failed.
      oleau32: Fix one entry overflow (Coverity).
      ntdll: Initialize pointers to NULL (Coverity).
      quartz: ppinsplitter might be used uninitialized (Coverity).

Markus Amsler (4):
      dbghelp: Speed up vector_add by avoiding pool_realloc calls. Remove no longer needed pool_realloc.
      dbghelp: Speed up pool_alloc. Patch by Eric Pouech.
      dbghelp: Speed up vector iteration by directly using for().
      dbghelp: Late init hash_table.

Michael Karcher (1):
      user32: Reduce the PeekMessage timeout to zero for USER16_AlertableWait.

Michael Stefaniuc (3):
      winhelp: Fix some comparisons between signed and unsigned.
      winedump: '$' isn't a valid character in an identifier regardless that gcc accepts it without warning.
      msi: A signed 1-bit bitfield doesn't make much sense; use unsigned.

Mikołaj Zalewski (10):
      localui: Add Polish translation.
      msxml3: Implement IXMLDOMDocument2::setProperty("SelectionLanguage", ...).
      comctl32: status: Send a NMMOUSE in mouse notifications, not a NMHDR.
      comctl32: toolbar: TB_SETIMAGELIST should try to preserve button width.
      msxml3: Improve the XPath queries handling.
      msxml3: For queries the get_item should change the current position.
      msxml3: Add tests for XPath queries with namespaces.
      msxml3: Implement IXMLDOMElement::getElementsByTagName.
      xcopy: Add Polish translation.
      kernel32: Clear the extra memory in LocalReAlloc16(h, bigger_size, LMEM_ZEROINIT).

Misha Koshelev (44):
      msi/tests: automation: Add tests for Session::EvaluateCondition.
      msi: automation: Implement Session::EvaluateCondition.
      msi/tests: automation: Test for Installer::CreateRecord error.
      msi: automation: Implement Installer::CreateRecord.
      msi/tests: automation: Test invoking methods as properties & vice versa.
      msi: automation: Return DISP_E_MEMBERNOTFOUND if flags are incorrect.
      msi: automation: Implement Record::FieldCount.
      msi/tests: automation: Correct expected Record::StringData PROPERTYPUT return variant type.
      msi/tests: automation: Add tests for Record::IntegerData.
      msi/tests: automation: Add test for View::Modify.
      msi: automation: Implement View::Modify.
      msi: automation: Implement Record::IntegerData.
      msi/tests: automation: Add test for Installer::InstallProduct.
      msi: automation: Implement Installer::InstallProduct.
      msi/tests: automation: Add tests for Installer::RelatedProducts.
      msi: automation: Implement Installer::RelatedProducts.
      msi: Make MsiEnumRelatedProducts enumerate registry value names, not subkeys.
      msi: automation: Installer::Products, verify HeapAlloc return value.
      msi: automation: Simplify counting products/related products.
      msi: automation: Condense a few loops.
      msi/tests: automation: Remove unnecessary if (SUCCEEDED(hr)) statements.
      msi/tests: automation: Add tests for Installer::ProductInfo.
      msi/tests: Add test for empty MsiGetProductInfo parameters not referencing default registry values.
      msi: Return appropriate values for empty MsiProductInfo parameters.
      msi: automation: Implement Installer::ProductInfo.
      msi/tests: automation: Change non-const LPCWSTR parameters to LPWSTR.
      msi/tests: automation: Check for NULL source string before calling lstrcpyW.
      msi: automation: Change all tabs to spaces to conform to msi formatting.
      msi: script: Change all tabs to spaces to conform to msi formatting.
      msi/tests: automation: Change SUCCEEDED(hr) to more specific hr == S_OK.
      msi/tests: automation: Fix Installer_ProductInfo ok message to correctly state function.
      msi/tests: automation: Add tests for StringList::_NewEnum.
      msi: automation: Generalize list implementation.
      msi: automation: Implement StringList::_NewEnum.
      msi/tests: automation: Installer::InstallProduct, remove a registry key set by Wine but not native.
      msi/tests: automation: Test Installer::Products before and after InstallProduct, check product is not/is installed.
      msi: Make MsiEnumProducts enumerate products, not features.
      msi: automation: Append copyright notice.
      shell32/tests: Add tests for ShellExecute DDE behavior.
      shell32: Fix execute_from_key to conform to native behavior.
      shell32/tests: Add tests for default DDE application name.
      shell32: Handle default DDE application names.
      shell32/tests: Remove duplicate code.
      comctl32: imagelist: Fix simultaneous selection of one bitmap into two device contexts.

Mounir IDRASSI (6):
      crypt32: Fix crash in CertGetCertificateContextProperty when querying length of a hash property.
      crypt32: Stub implementation of CryptFindLocalizedName.
      crypt32: Stub implementation of CertGetCertificateChain.
      rsaenh: Fix crash in RSAENH_CPVerifySignature if pbSignature is set to NULL or if dwSigLen is lesser than the expected value.
      crypt32: Fix CertAddCertificateContextToStore when called with CERT_STORE_ADD_USE_EXISTING.
      winscard: Small initial stub implementation.

Nigel Liang (1):
      shlwapi: Stub implementation for SHSetTimerQueueTimer.

Paul Vriens (2):
      ole32/tests: Check for correct return value.
      advpack/tests: Don't hardcode the system directory.

Peter Oberndorfer (4):
      dbghelp: Minor cleanup.
      ntdll: Fix up instruction pointer in context inside raise_exception.
      winedbg: Show some info for msvcrt C++ exceptions.
      winedbg: Only check for break/watch points on first chance exceptions.

Ralf Beck (2):
      winealsa.drv: Add midi realtime and midi common messages on midi input.
      winealsa.drv: Add missing offset of pitch bender in midi input.

Rob Shearman (43):
      ole32: Fix CoUninitialize to only free libraries that return S_OK from DllCanUnloadNow.
      ole32: Don't lookup the address for the DllGetClassObject function for ole32.dll in the apartment loaded dll list.
      server: Add the logon SID to the default admin token's groups.
      ole32: Create host apartments to enable isolation of objects of incompatible threading models.
      ole32: Fix reading from an HGLOBALStreamImpl with an invalid HGLOBAL.
      ole32: Fix hosting in main apartments.
      wininet: Add support for SSPI authentication for HTTP.
      wininet: Implement basic non-proxy authentication.
      ole32: Handle MSHLFLAGS_TABLEWEAK and MSHLFLAGS_TABLESTRONG when marshaling a proxy.
      ole32: Make proxy_manager_get_remunknown AddRef the return IRemUnknown object.
      ole32: The identity functions can be used from apartments other than the one the proxy was unmarshaled into.
      ole32: Remove a useless trace.
      ole32: Add spec entry for CoRegisterSurrogateEx.
      ole32: Fix some races in the global interface table implementation.
      ole32: Add more tests for global interface table functions.
      ole32: Allow the getting of different interfaces from the global interface table than that with what the object was registered with.
      ole32: Remove spurious AddRef of returned object on retrieval of an interface from the global interface table.
      hlink: Fix HlinkCreateFromString to create a URL moniker if the input target is a URL.
      urlmon: Fix a typo in URLMonikerImpl_Save.
      urlmon: The persisted version of URL monikers should be size of URL
      shlwapi: Add a slash to the URL if there is no path component.
      hlink: Improve the saving of hlinks by documenting the unknown header values and saving out more data.
      hlink: Improve the loading of hlinks.
      mlang: Implement ConvertINetString.
      secur32: Fix the dwVersion field in the security function tables returned by InitSecurityInterfaceA/W.
      secur32: Fix the wrapper InitializeSecurityContextA/W functions to handle phContext and phNewContext parameters being optional for some SSPs.
      secur32: Make the NTLM SSP cope with a NULL phCredential parameter when InitializeSecurityContext is called more than once.
      secur32: Don't set the output buffer type in NTLM's IntializeSecurityContextA/W.
      secur32: Fix NTLM's InitializeSecurityContextA/W to be flexible with the index of the token buffer in both the input and output buffer descriptions.
      setupapi: Add a FIXME in SetupCopyOEMInfW for when we should be copying a catalog file.
      wininet: Pass context to InitializeSecurityContext in second parameter.
      wininet: Fix basic authentication by putting Basic directing into the scheme field, as the pszAuthValue can have an optional realm string appended.
      wininet: Cope with non-nul-terminated header strings being passed to HttpSendRequestW.
      wininet: Don't close the connection if the caller passes in zero for the number of bytes to be read.
      wininet: Add a new NETCON_query_data_available function.
      server: Move most of the duplicate_token request to a new function, token_duplicate, to enable the code to be used inside wineserver.
      server: When starting a new process, use the token from the calling process, if one exists.
      oleaut32: For automatic-value-getting in ITypeInfo::Invoke, it doesn't matter what flag(s) the function was executed with, just what type of function is being invoked.
      include: Fix a typo in wincred.h.
      oleaut32: Fix the references in function descriptions returned for dual IDispatch interfaces.
      widl: A structure with variance, but without conformance should be a complex struct instead of a conformant, varying struct.
      widl: RPC_FC_BIND_PRIMITIVE is a base type so reverse an if statement
      widl: Set current_structure when writing out structure members to

Robert Reif (1):
      dsound: Add missing interface ID.

Rolf Kalbermatter (4):
      advapi32: Add service state request definitions.
      advapi32: Add access flags to service handle data.
      advapi32: Fix return value to indicate error when NULL string is passed in.
      advapi32: Return error on NULL service name to GetServiceDisplayNameA/W.

Stefan Dösinger (8):
      ddraw: Make the ddraw list lock a global dll lock.
      ddraw: Hold the lock in creation functions.
      ddraw: Hold the dll lock in IDirectDraw methods.
      ddraw: Hold the lock in IDirectDrawSurface methods.
      ddraw: Check the validy of IDirectDrawSurface::BltFast parameters.
      ddraw: Hold the lock in IDirect3DX methods.
      wined3d: Don't mess with nv texture shaders if its not supported.
      wined3d: Keep GL_TEXTURE_2D enabled when using dummy textures.

Stefan Leichter (1):
      advapi32: Added implementation of RegDeleteTreeA/W.

Thomas Spear (1):
      wine.inf: Add uninstall key.

Tim Schwartz (1):
      net.exe: Add NET START command.

Vitaliy Margolen (4):
      dinput: Prevent race between destroying the hook window and unloading the dll.
      ntdll: Implement RtlWriteRegistryValue and forward ntoskrnl to it.
      wine.inf: Create fake dll for iexplore.exe.
      user32/test: Add few tests for messages sent from SetForegroundWindow().

--
Alexandre Julliard
julliard@winehq.org
