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

What's new in this release:
  - A bunch of WinHelp improvements.
  - Better Japanese font support.
  - A ton of rpcrt4 fixes.
  - Several Alsa capture fixes.
  - Improved support for screen resolution changes.
  - 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.51.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.51.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.50:

Alex Villacís Lasso (6):
      riched20: EM_GETTEXTEX with GT_USECRLF should not leave a single CR when running out of space.
      riched20: WM_GETTEXT should return 0 on overflow but fill buffer anyway.
      riched20: EM_GETTEXTLENGTHEX must not count last paragraph break if GTL_USECRLF.
      riched20: WM_GETTEXTLENGTH should include CRLF conversions in returned count.
      riched20: Invalidate all the text on bogus last selection.
      riched32: Fix regression in WM_GETTEXTLENGTH on richedit 1.0 emulation.

Alexander Dorofeyev (2):
      ddraw: Fix wrong initialization order in IDirect3DDevice vtable.
      wined3d: Improve thread safety in IWineD3DSurfaceImpl_BltOverride.

Alexander Nicolaysen Sørnes (14):
      shell32: Localize file context menu.
      winecfg: Update Norwegian resource.
      wineboot: Add Norwegian resources.
      write: Add Norwegian resources.
      browseui: Add Norwegian resources.
      mshtml: Update Norwegian resources.
      credui: Update Norwegian resources.
      shell32: Localize 'new folder' string.
      shell32: Handle backspace key in shellview.
      user32: A few more colour changes to match modern Windows.
      comdlg32: PageSetupDlgA: Read margins from correct edit boxes.
      comdlg32: PageSetupDlgA: Swap margins when changing orientation.
      comdlg32: PageSetupDlgW: Swap margins when changing orientation.
      wordpad: Move registry functions to a separate file.

Alexandre Julliard (36):
      ntdll: Added a sleep in NtGet/SetContextThread, a yield is not enough on some kernels.
      shell32: Get rid of the internal _InsertMenuItem function.
      kernel32: Remove the no-exec fault workaround, it shouldn't be needed anymore.
      winmm/tests: Don't mess with the mixer controls in non-interactive mode.
      server: Implemented EnumWindowStations and EnumDesktops.
      server: Partial implementation of NtQueryDirectoryObject.
      server: Return correct object types in the get_directory_entry request.
      clock: Use system colors instead of hardcoded RGB values.
      winhelp: Use system colors instead of hardcoded colors.
      shell32: Fix some wrc warnings.
      Removed some unneeded imports.
      winebuild: Print a warning when failing to import a data export.
      winebuild: Improved checks for missing forward entry point targets.
      ntdll: Support delayed loading of modules referenced by forwarded entry points.
      winebuild: Also optimize out imports that are only used for forwards.
      msvfw32: Fix invalid check that caused the rest of VideoCapDriverDescAndVer16 to be optimized out.
      server: Fix incorrect use of size_t instead of data_size_t.
      comctl32: Fix a compiler warning.
      Avoid size_t types in traces.
      opengl32: ntdll import is still needed when building without optimizations.
      kernel32: Revert change that slipped in commit db24d3af9a6e56c3036ba0a3e5d62dae4f2676d3 by mistake.
      kernel32: Read label and serial from the filesystem when the device is accessible but unknown.
      user32: Keep waiting for posted messages in peek_message after we get an ignored message.
      Make.rules: Added rules for building the dlldata.c file.
      makedep: Added support for dlldata.c dependencies.
      wordpad: Fix a compiler warning.
      Makedll.rules: Add a generic EXTRADLLFLAGS variable instead of defining a specific variable for every possible parameter.
      winebuild: Don't set the IMAGE_FILE_DLL flag on native modules.
      winecrt0: DriverEntry is a WINAPI function.
      Make.rules: Process man pages in the C locale.
      wordpad: Fix invalid pointer usage.
      hhctrl.ocx: Store a copy of the string pointers to enable freeing them without casting away const.
      user32: Print the RegisterHotKey fixme only once.
      gdi32/tests: Fix a compiler warning.
      riched20/tests: Avoid using size_t in traces.
      riched32/tests: Avoid using size_t in traces.

Alexandru Balut (2):
      oleaut32: Implement VarWeekdayName + tests.
      wine.inf: Fix the type of some values in HKLM, System\CurrentControlSet\Control\Session Manager\Environment.

Alistair Leslie-Hughes (10):
      msxml3: Implement cloneNode.
      msxml3: Fix memory leaks.
      msxml3: Fix memory leak.
      shdocvw: Fix memory leak.
      urlmon: Fix memory leaks.
      msxml3: Implement IPersistStream.
      msxml: Register missing components.
      shlwapi: Fix memory leak in test.
      msxml3: Fix memory leak in test.
      msxml3: Fix memory leak in tests.

Anatoly Lyutin (1):
      start: Convert to Unicode.

Andrew Riedi (10):
      winealsa.drv: Fix a comment.
      user32: Add a FIXME for animated cursors.
      comdlg32: DPRINTF -> TRACE.
      ddraw: DPRINTF -> TRACE.
      user32: Uncomment and explain a test in test_DestroyCursor().
      user32: Improve test_DestroyCursor().
      user32: Test the initial state of the cursor.
      ole32: DPRINTF -> TRACE.
      dinput: DPRINTF -> TRACE.
      dsound: DPRINTF -> TRACE.

Andrew Talbot (19):
      cabinet: Remove unneeded casts.
      advapi32: Remove unneeded casts.
      comctl32: Remove unneeded casts.
      comdlg32: Remove unnecessary casts.
      crypt32: Remove unnecessary casts.
      d3d8: Remove unneeded casts.
      d3d9: Remove unneeded casts.
      dbghelp: Remove unneeded casts.
      cabinet: Remove unneeded casts.
      ddraw: Remove unneeded casts.
      cabinet: Remove unneeded casts.
      dinput: Remove unneeded casts.
      devenum: Remove unneeded cast.
      dmime: Remove unneeded casts.
      dmloader: Remove unneeded casts.
      dmusic: Remove unneeded casts.
      dnsapi: Remove unneeded casts.
      dplayx: Remove unneeded casts.
      kernel32: Remove unneeded casts.

Aric Stewart (12):
      uninstaller: Iterate keys in HKEY_CURRENT_USER also as some programs install their uninstall information there.
      commdlg: File name and extension offsets are not guaranteed to be the same in W->A conversions.
      fonts: Add 18 pixel strike with japanese fonts to system.sdf.
      system.sfd: Modify a few 18 pixel glyphs to generate metrics correctly.
      sfnt2fnt: Use code from gdi32/freetype to do a better job finding the TTAG_EBLC to deal with older version of freetype without having to fall back on unreliable hacks.
      fonts: Build the jvgasys.fon from the 18 pixel strike.
      gdi32: Font tests with Japanese font data.  Thanks to Dmitry Timoshkov for the data and tests.
      wintrust: Implementations for WTHelperGetFileName and WTHelperGetFileHandle.
      imagehlp: Improve last error handling in ImageGetCertificateData.
      netapi32: Improve stub for NetLocalGroupGetMembers a bit to return current user.
      gdi32: Cache font enum info.
      cryptnet: InternetCrackUrlW requires component buffers when used with ICU_DECODE.

Detlef Riekenberg (4):
      wine.inf: Add more fake dlls.
      rsabase: Add version resource.
      schannel: Add version resource.
      Assorted spelling fixes.

Dmitry Timoshkov (8):
      server: Make fd_poll_event static.
      user32: Make sure the desktop window is created before mode enumeration.
      explorer: Store current display mode in the registry on startup.
      explorer: Make initialize_display_settings work with a Win9x version of rpcrt4.
      winex11.drv: Don't forget to initialize dmFields.
      winex11.drv: Use registry settings as a default display mode.
      include: Add an initial version of oleacc.idl.
      ntdll: Initialize the APC call union to suppress valgrind warnings. Take 2.

Francois Gouget (14):
      ddraw: Rename DDRAW_dump_flags_() to DDRAW_dump_flags_nolf() to clarify its difference from DDRAW_dump_flags().
      ddraw: Modify DDRAW_dump_(DWORD|PTR|DDCOLORKEY|DDSCAPS2|pixelformat)() to print a trailing '\n'.
      inetcomm: Fix compilation on systems that don't support nameless unions.
      inetcomm/tests: Fix compilation on systems that don't support nameless unions.
      wininet/tests: Remove trailing spaces in ok() calls.
      Assorted spelling fixes.
      winealsa.drv: Remove trailing spaces in Wine traces.
      kernel32/tests: dll_capable() makes no sense since it's only used on APIs we link with. So remove it.
      kernel32/tests: Get the test to run on Windows 95.
      hlink: Fix the HlinkUpdateStackItem() prototype.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      comtcl32/tests: Dynamically load ImageList_SetImageCount() because it is missing on Windows 95.
      comctl32/tests: InitCommonControlsEx() is missing on Windows 95 so call InitCommonControls() instead.
      comctl32/tests: Avoid SHDeleteKeyA() because it does not exist on Windows 95.

Gerald Pfeifer (7):
      comctl32: Remove extraneous check (unsigned < 0).
      wined3d: Fix handling of a special case in IWineD3DImpl_FillGLCaps() and adjust type of loop variable.
      msvcrt: Fix error handling in _aligned_offset_realloc().
      wined3d: Fix error handling in transform_texture().
      comctl32: Simplify condition based on WPARAM always being >= 0.
      wined3d: Fix error handling in fixed_get_input().
      icmp: Correctly handle underflow in IcmpSendEcho().

Gregor Brunmar (3):
      comctl32: Disable propsheet apply button at start up.
      comctl32: Added context menu to treeview.
      comctl32: Monthcal lost focus fix.

Guido Barzini (1):
      iphlpapi: Restore lost initialisation of ptr->AddressLength in GetAdaptersInfo.

Hans Leidekker (10):
      gdi32: Implement GetTextExtentExPointI.
      kernel32: Implement and test {G, S}etConsoleInputExeName{A, W}.
      usp10: Use GetCharABCWidthsI to implement ScriptGetGlyphABCWidth.
      usp10: Store original font in the script cache and reselect it on successive calls.
      usp10: Don't trace char to glyph mappings.
      kernel32: GetConsoleInputExeNameW returns TRUE even when it fails.
      wininet: Make FtpGetCurrentDirectoryA pass all todo_wine tests.
      gdi32: GetCharABCWidthsI does not require a scalable font.
      usp10: Add some tests for ScriptShape/Place and make them pass.
      usp10: Do glyph translation for truetype fonts only.

Jacek Caban (23):
      mshtml: Added IHTMLElement2::get_dir implementation.
      mshtml: Make IConnectionPointContainer more flexible.
      mshtml: Initialize HTMLElement in the beginning of constructors.
      mshtml: Added IConnectionPointContainer iface to all HTMLElement objects.
      mshtml: Move HTMLTextContainerEvents connection point to HTMLTextContainer object.
      mshtml: Added DIID_HTMLTableEvents connection point.
      mshtml: Return NULL instead of empty string in IHTMLBodyElement::get_background.
      mshtml: Improve debug traces.
      shlwapi: Uncomment IUnknown_EnableModeless code.
      mshtml: Added more DOM tests.
      mshtml: Added IHTMLStyleSheet::get_rules implementation.
      mshtml: Added IHTMLStyleSheetRulesCollection::get_length implementation.
      mshtml: Fixed ref counting.
      mshtml: Added HTMLTxtRange::Exec(IDM_INDENT) implementation.
      mshtml: Added HTMLTxtRange::Exec(IDM_INDENT) test.
      hlink: Added IHttpNegotiate interface to ExtensionService.
      shdocvw: Added client site's IOleCommandTarget tests.
      mshtml: Added more IHTMLStyle implementation.
      mshtml: Fix CSS px unit handling differences between Gecko and IE.
      shdocvw: Return S_OK in IOleObject::SetHostNames.
      urlmon: Fixed handling MIME type in Binding object.
      urlmon: Includes clean up.
      shdocvw: Register IE settings by iexplore.exe.

James Hawkins (16):
      msi: Use a hash table for reordering rows in a WHERE query to conserve space.
      msi: Test the CCPSearch action.
      msi: Implement the Version property of the Installer object.
      msi: Add a stub implementation of MsiEnumComponentCostsW.
      msi: Test the CompLocator subset of the AppSearch action.
      msi: Add tests for MsiGetComponentPath.
      msi: Reimplement MsiGetComponentPath.
      msi: Add tests for MsiGetProductCode.
      msi: Remove two tests that depend on the sort order of RegEnumValue.
      msi: Reimplement MsiGetProductCode.
      msi: Handle the CompLocator table in the AppSearch action.
      msi: Free the deformatted string.
      msi: Free the user sid string.
      msi: Properly release the record.
      msi: Free the cabinet string on error.
      msi: Close the file handle returned by FindFirstFile.

Jonathan Ernst (9):
      shell32: Updated French translation.
      browseui: Updated French translation.
      wineboot: New French translation.
      write: New French translation.
      wordpad: Updated French translation.
      mshtml: Updated French translation.
      Updated French translation.
      winecfg: Updated French translation.
      winecfg: Add missing audio tab controls to other languages.

Kirill K. Smirnov (16):
      winhelp: Correctly deal with various TopicBlockSize/Compression combinations. Simplify HLPFILE_Uncompress_Topic function.
      winhelp: Add support for winhelp 3.0 phrases.
      winhelp: Add support for winhelp 3.0 topics.
      winhelp: winhelp 3.0 uses page numbers instead of hash values.
      winhelp: Implement generic B+ tree search function.
      winhelp: Rewrite Context support using B+ tree search.
      winhelp: Rewrite internal files lookup using B+ tree search. Add some sanity checks.
      winhelp: Enlarge font size by 3 as native winhelp does.
      winhelp: Use HEAP_ZERO_MEMORY instead of setting individual fields to zero.
      winhelp: There are files without Phrases or Phrases40 compression, add support for them.
      winhelp: Do not confuse caller application with bogus error when we really succeeded.
      winhelp: winhelp >3.0 files always use 0x4000 as a divisor in TOPICPOS regardless of DecompressSize.
      winhelp: Change font charset from ANSI to DEFAULT.
      winhelp: Export enum and search B+ tree functions.
      winhelp: Read keywords.
      winhelp: Display keywords index dialog box.

Lei Zhang (16):
      quartz: Move current tests into their own test case.
      quartz: Add a test for IFilterGraph2.
      quartz: Add some IGraphBuilder related tests.
      quartz: Fix return value in IFilterGraph_FindFilterByName.
      quartz: Validate input for IFilterGraph_FindFilterByName.
      quartz: Add IFilterGraph2 interface and stubs.
      quartz: Add videorenderer QueryInterface test.
      quartz: Add videorenderer aggregation test.
      quartz: Add referenceclock QueryInterface test.
      quartz: Set *ppvObject to NULL if QueryInterface fails.
      quartz: Make video renderer aggregatable.
      ole32: Print a fixme when an aggregation attempt fails.
      quartz: Give video renderer's Inner_QueryInterface a less generic name.
      quartz: Fix typo in GraphConfig_AddRef.
      quartz: Make aggregation test generic.
      quartz: Do aggregation test for more video renderer interfaces.

Lionel Debroux (3):
      msi: Fix missing alloc check.
      msi: Fix memory leaks (found by Smatch).
      winhelp: Fix memory leaks (found by Smatch).

Louis Lenders (1):
      msvcrt40: Add DllMain.

Luis C. Busquets Pérez (10):
      d3dx8: Implementation of D3DXAssembleShaderFromFileA.
      mshtml: Update Spanish resource.
      shell32: Update Spanish resource.
      browseui: Add Spanish resource.
      wineboot: Added Spanish resource.
      gphoto2: Add Spanish resource.
      credui: Add Spanish resource.
      msvfw32: Add Spanish resource.
      sane: Add Spanish Resource.
      shell32: Update Spanish resource.

Maarten Lankhorst (10):
      winealsa: Fix period size in capture.
      winealsa: Fix return value checking in wavein.
      winealsa: Simplify the feeding of capture buffers.
      winealsa: Clear dwBytesRecorded in waveheader when adding buffer.
      winealsa: Remove fixed fixme.
      winealsa: Add control 'Digital' as alias for microphone.
      winealsa: Don't require a cswitch control for capture.
      winealsa: Add 'Front Mic' as alias for microphone.
      riched20: Make some functions static.
      include: Update oleacc with new constants and IAccessible interface.

Marcel Partap (3):
      include/winspool.h: Add FORM_INFO_2.
      winspool.drv/tests: Add dumping of FORM_INFO_1/2 in test_EnumForms.
      configure: Add i586-mingw32 prefix for crosscompiling.

Marco Schuster (3):
      wined3d: Fixed a bug that the 8600M GT could not be detected.
      wine.man: Added small clarification for AppDB.
      loader: Added de_DE.UTF-8 translated Wine man page.

Marcus Meissner (1):
      server: Removed superflous async->queue NULL tests.

Michael Stefaniuc (20):
      secur32: Remove the SECUR32_ALLOC() macro around HeapAlloc().
      kernel32: Pass HEAP_ZERO_MEMORY to HeapAlloc() instead of clearing the memory with a separate memset() call.
      mshtml: Rename the wrappers around HeapAlloc() &Co to use the new standard naming.
      winecfg: Pass HEAP_ZERO_MEMORY to HeapAlloc() instead of clearing the memory with a separate memset() call.
      user32/tests: Pass HEAP_ZERO_MEMORY to HeapAlloc() instead of clearing the memory with a separate memset() call.
      riched20: Rename the wrappers around HeapAlloc() &Co to use the new standard naming.
      riched20: Remove the RTFAlloc() wrapper around heap_alloc().
      hhctrl.ocx: Rename the wrappers around HeapAlloc() &Co to use the standard names.
      iccvid: Rename the wrappers around HeapAlloc() &Co to use the standard names.
      pdh: Rename the wrappers around HeapAlloc() &Co to use the standard names.
      localspl: Rename the wrappers around HeapAlloc() &Co to use the standard names.
      hlink: Rename the wrappers around HeapAlloc() &Co to use the standard names.
      crypt32: Do not use an empty body in an else-statement as documentation.
      usp10: Rename the wrappers around HeapAlloc() &Co to use the standard names.
      wined3d: Fix a "ordered comparison of pointer with integer zero".
      rsaenh/tests: Remove duplicate abPlainPrivateKey variable.
      rsaenh/tests: Remove an unused global variable.
      wineoss.drv: Move a function wide variable down to the block it is used in.
      kernel32: Do not reuse the name of a function argument for a local variable.
      winebuild: Remove duplicate declaration of variable 'j'.

Paul Vriens (3):
      kernel32: Add some simple tests for GetVersionExA.
      kernel32: Make tests run on Win98 again.
      kernel32/tests: Test for functions should be or-ed.

Peter Oberndorfer (2):
      comctl32: Add EnumMRUList tests.
      comctl32: EnumMRUListA/W fix getting list size by negative item pos.

Rob Shearman (73):
      oleaut32: Implement OLEPictureImpl_GetIDsOfNames.
      include: Move Wine-specific EH_* defines from winnt.h to include/wine/exception.h.
      ole32: Always create a window for the main apartment.
      ole32: Ignore the threading model of the PSFactoryBuffer object created during standard marshaling.
      include: Fix the HRESULT_FROM_WIN32 macro to not change the HRESULT if the error is already an HRESULT.
      rpcrt4: Initialise the memory in test_simple_struct_marshal before passing it to NdrSimpleStructUnmarshall.
      rpcrt4: Reverse the conditions for which *pPointer is assigned base_ptr_val in PointerUnmarshall.
      rpcrt4: Test that the string retrieved from get_name was actually unmarshalled correctly.
      d3dx8: Initialise temp in D3DXQuaternionInverse to avoid a uninitialised variable warning with some versions of gcc.
      rpcrt4: Flesh out more of the IRpcChannelBuffer vtable to make the test_delegating_Invoke test succeed on Windows.
      rpcrt4: Call IRpcChannelBuffer_GetDestCtx in NdrStubInitialize, just like we do in NdrProxyInitialize.
      rpcrt4: Put the delegating stub thunks in an executable memory page,  rather than on the heap.
      ole32: Fix the test of the size returned from WdtpInterfacePointer_UserSize.
      rpcrt4: Handle all non-continuable exceptions in CStdStubBuffer_Invoke.
      rpcrt4: Set the destination pointer in PointerUnmarshall before calling the referenced type's unmarshalling routine.
      rpcrt4: Add tests for a pointer to a conformant strings.
      rpcrt4: Set fMustAlloc to TRUE when unmarshalling an object pointer.
      rpcrt4: Set the memory pointer in NdrBaseTypeUnmarshall to the buffer if we're unmarshalling on a server without memory being passed in.
      ole32: Initialise object variable in RunningObjectTableImpl_GetObject.
      mshtml: Use the correct deallocator in the htmldoc tests for the memory returned by IMoniker_GetDisplayName and fix a use-after-free error.
      rpcrt4: Fix a memory leak in RpcAssoc_BindConnection.
      rpcrt4: Fix a memory leak when freeing an association by deleting the critical section.
      rpcrt4: Fix a memory leak caused by NdrFullPointerXlatFree not freeing the entries in the full pointer translation table.
      rpcrt4: Improve PointerFree to not free buffer memory.
      oleaut32: Don't call SafeArrayAllocData in LPSAFEARRAY_UserUnmarshal if we called SafeArrayCreateEx instead of SafeArrayAllocDescriptor.
      oleaut32: Try to re-use existing memory when unmarshalling variants with byref types.
      oleaut32: Set the number of locks held on the safe arrays in the safe array tests to zero before destroying them, otherwise the operation will fail and leak memory.
      mshtml: Fix a memory leak in the htmldoc tests.
      ole32: Register the window used in the marshal tests only once.
      rpcrt4: Implement NdrConformantStructFree.
      rsaenh: Fix some leaks of the provider handle in the rsaenh tests.
      oleaut32: Fix a reference count leak of the TMarshalDispatchChannel.
      oleaut32: Fix two memory leaks in the test for DispCallFunc.
      oleaut32: Fix a leak of the typelib in the tmarshal tests.
      rpcrt4: Use an alertable wait in rpcrt4_protseq_np_wait_for_new_connection to fix a small memory leak flagged by Valgrind.
      ole32: Process messages while waiting for a local server to create a pipe.
      widl: Don't override the pointer type in top-level arrays.
      rpcrt4: Fix NdrConformantArrayUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
      rpcrt4: Fix NdrFixedArrayUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
      rpcrt4: Fix NdrConformantStructUnmarshall to use buffer memory if applicable and to reuse memory for embedded pointers.
      rpcrt4: Implement PointerMemorySize.
      rpcrt4: Add a trace to NdrBaseTypeMemorySize.
      rpcrt4: Fix the return value from NdrSimpleStructMemorySize.
      rpcrt4: Save the buffer in EmbeddedPointerMemorySize, like EmbeddedPointerUnmarshall does.
      rpcrt4: Add a missing break in DllMain.
      rpcrt4: Implement NdrConformantArrayMemorySize.
      rpcrt4: NdrRangeUnmarshall is implemented so add it to the spec file.
      rpcrt4: Pass the USER_MARSHAL_CB structure into user marshal routines.
      actxprxy: Add the start of actxprxy.dll.
      wine.inf: Register actxprxy.dll and create a fake DLL for it.
      widl: Always write a freeing function for arrays in generated code.
      widl: Arrays should have freeing code generated on the server side, even if they are [in] parameters.
      widl: Make sure to generate freeing calls for all non-simple structures with pointers and pointers to user marshalled types.
      widl: Support the address-of operator in expressions.
      widl: iid_is should take expressions, not just identifiers.
      widl: Add support for non-basetype return types.
      rsaenh: Fix some memory leaks in the tests.
      rpcrt4: Make the NdrAllocate tests pass on XP SP2 and greater.
      rpcrt4: Store allocated memory in a singly-linked list to keep track of what we should and shouldn't free in NdrFree.
      rpcrt4: Try to free every non-stack pointer in PointerFree now that NdrFree does the sanity checking for us.
      widl: Remove some confusion in how version numbers are packed into an attribute by defining some macros for this purpose.
      widl: Swap the version packing order back to what typelibs expect.
      rpcrt4: Add tests for freeing non-NdrAllocate allocated memory blocks.
      widl: Don't write redundant FC_RP type format out for conformant strings, unless it is a top level variable.
      Revert "rpcrt4: Try to free every non-stack pointer in PointerFree now that NdrFree does the sanity checking for us.".
      rpcrt4: NdrStubGetBuffer shouldn't set BufferStart and BufferEnd.
      rpcrt4: Fix the check in NdrPointerFree.
      rpcrt4: Free the base pointer in PointerFree when freeing a pointer with RPC_FC_P_DEREF.
      rpcrt4: Partially revert commit 18faf3184b2ea263d77c2a7ad92eef27bc4ba08f.
      rpcrt4: Document NdrAllocate.
      rpcrt4: Update TODO list.
      rpcrt4: Fix a typo in rpcrt4_conn_tcp_read.
      include: Make RpcRaiseException DECLSPEC_NORETURN, like it is in the PSDK.

Roy Shea (7):
      wininet: Removed inline from copy_compsA and zero_compsA to allow Windows testing.
      wininet: Added check of dwStructSize required by Windows in calls to InternetCrackUrlA.
      svchost: Implementation of svchost.
      qmgr: Renamed bits_main.c to qmgr_main.c and updated comments.
      include: Added bitsmsg.h header.
      include: Added IDL file for BITS.
      qmgrprxy: Queue manager proxy generated using an IDL compiler and bits.idl.

Sam Dennis (1):
      advapi32: Fix undocumented behaviour in ReqQueryValueEx when 'count' and 'type' point to the same address.

Stefan Dösinger (30):
      wined3d: mov to a0.x does a floor(), not a round to nearest.
      wined3d: Enabling too many lights is silently ignored.
      wined3d: Unify bpp to format conversion.
      wined3d: Detect the Intel GPU in macbooks.
      wined3d: Add parentheses to a flag check.
      wined3d: Add a method for querying the gl drawable size of rendertarget.
      wined3d: Use the proper drawable size when setting the scissor rect.
      wined3d: Retrieve the height properly when setting the viewport.
      wined3d: Disable the scissor test when blitting.
      wined3d: Fixes for drawable handling in Clear.
      wined3d: Clear honors the viewport.
      wined3d: Use the proper drawable size when clearing.
      wined3d: Test clearing regarding the scissor test and colorwrite.
      wined3d: Ignore unused attributes when generating the swizzle array.
      wined3d: Initialize output texcoord .w to 1.0 if needed.
      wined3d: A more detailed occlusion query test and fixes.
      ddraw: Set X8R8G8B8 for 32 bpp.
      wined3d: Add an alpha blending test.
      wined3d: Use the adapter to read the display mode.
      wined3d: Remove 24/32 bit hacks.
      wined3d: Use SetDisplayMode to set the display mode.
      winex11: Remove an unused variable.
      gdi32, winex11drv: Add a test for compatible bitmap depths.
      gdi32: Test bitmap depths.
      winex11: Remove an unused variable.
      gdi32: Test the bit depth of compatible bitmaps explicitly.
      winex11: Ignore the alpha if all pixels are 0.
      gdi32: Test the "alpha" channel on compatible bitmaps.
      user32: Add a test for WM_DISPLAYCHANGE.
      user32: Add a test for EnumDisplaySettings vs GetDeviceCaps.

Ted Percival (1):
      regedit: Display REG_DWORD as unsigned with lowercase hex digits.

Thomas Weidenmueller (1):
      comctl32: Fix painting bug in listview control.

Tim Schwartz (1):
      advapi32: service_control_dispatcher(): Fixed invalid pipe test to display GetLastError() before it gets overwritten.

Vitaly Lipatov (7):
      oledlg: Use wide strings, fix buffers size.
      oledlg: Add Russian translation.
      avifil32: Fix buffer sizes.
      midimap: Fix buffer sizes.
      shell32: Use sizeof instead of constant for buffer size.
      winspool.drv: Fix buffer sizes.
      winecfg: Updated Russian translation.

Zac Brown (2):
      wininet: Fix FtpGetCurrentDirectoryW to handle bad input.
      wininet: Add test for FtpGetCurrentDirectoryA in wininet/tests/ftp.c.

--
Alexandre Julliard
julliard@winehq.org
