The Wine development release 1.1.15 is now available.

What's new in this release (see below for details):
  - Gecko engine update.
  - Better region support in GdiPlus.
  - Support for cross-compilation in winegcc.
  - Beginnings of MS Text Framework support.
  - Many fixes to the regression tests on Windows.
  - Various bug fixes.

The source is available from the following locations:

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

   5694  Lionhead Black & White 2 demo crashes
   7014  Unhandled page fault when exiting Commandos - BEL
   7297  MIDI in/out fails, ports recognized
   7643  Supreme Commander crashes during play
   8522  tabbed control captures mouse input even when it shouldn't
  10611  VMware Infrastructure Client: Fails to install.  MSIEXEC high CPU usage
  11729  Unreal Tournament: dinput mode makes game unplayable
  12558  Can't record long MIDI sysex data
  12692  Final Reality: DX5 benchmark fails to start
  12862  Yabause: Fullscreen does not appear correctly
  13773  xfwm4 and fullscreen issues
  13890  Zmodeler: freezes and crashes
  14467  Photoshop CS2 update installer doen't work...
  14504  Ableton Live fails to install -- crashes at setup
  14561  Outlaws window shrinked to 1/4 of screen
  14585  Anquet maps won't install with "internal installer error" number 536870920.
  14708  in The White Chamber game in video scenes video and audio is not in sync
  14754  freenet SMS-Program crashed during the start
  14756  Guitar Pro 5: Alt+Down on score activates menubar
  14950  Microsoft Office 2007, Google Chrome: scroll bars in the font name/size and url boxes
  15565  Wine Gecko needs .pdb file and defined build procedure
  15847  rpcrt4's server crosstest crashes on windows
  16181  istool: toolbar spacing way too wide
  16410  3dmark2000 dialog window very large
  16713  Request: Richedit should handle Ctrl+Scrollwheel
  16785  Exception in Gecko 0.9.x xul.dll when run from not-installed Wine built with seperate build and source trees
  16931  Compile broken in dlls/iphplpapi/ipstats.c on NetBSD
  17033  d3dxof: Chicken Tournament needs d3dxof's "source type 1", not implemented yet
  17109  Galactic Civilizations II does not start
  17231  status_directx page on winehq is missing
  17255  invalid WriteFile call in mshtml
  17263  missing expectation of ERROR_MORE_DATA status code in rpcrt4_conn_np_read
  17278  Setupapi procedure error CM_Query_And_Remove_SubTreeW
  17290  DOSBox installer crashes on launch
  17328  tools/widl: warning: null format string
  17335  crypt32/tests: compiler warnings
  17340  winebuild does not respect --host & --target configure parameters

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

Changes since 1.1.14:

Alexandre Julliard (56):
      winegcc: Make platform-specific behaviors depend on variables instead of #ifdefs.
      winegcc: Support -b option for cross-compiling.
      configure: Remove no longer needed check for -fshort-wchar.
      ntoskrnl.exe: Correctly remove the vectored exception handler.
      ntdll: Add a trace when calling vectored exception handlers too.
      kernel32/tests: Print some more details on directory test failures.
      kernel32/tests: Allow more error codes from GetDiskFreeSpace.
      kernel32/tests: Use a better invalid filename than "foo".
      kernel32/tests: Don't hardcode C drive for CreateDirectory tests.
      kernel32/tests: Add another error code in the CreateDirectory test.
      setupapi/tests: Don't compare the drive letter of expanded file paths.
      dbghelp: Fix pool allocation routines to be able to support arbitrary sizes.
      dbghelp: Allocate enough memory initially for regexps instead of growing the buffer.
      dbghelp: Fall back to string comparison if regex support is missing.
      dbghelp: Moved SymEnumLines to symbol.c to reuse the regex support.
      include: Define LANGID in wtypes.idl.
      winebuild: Determine the appropriate as/ld/nm commands at the time they are needed.
      winebuild: Append the correct options for as and ld when forcing a 32/64-bit build.
      winebuild: Search for the as/ld/nm tools in the PATH under various names.
      winegcc: Pass the -m32/-m64 options to winebuild too.
      fonts: Copy the TrueType fonts to the build directory for out-of-tree builds.
      Fix position of CDECL qualifier for functions that return pointers.
      widl: Avoid using GetExceptionCode outside of an exception handler.
      widl: Add a dummy reference to the filter function to avoid a warning.
      widl: Replace unsigned long and size_t by unsigned int where appropriate.
      widl: Add printf format attribute on all printf-like functions and fix resulting warnings.
      widl: Print all NdrFcShort parameters as shorts to avoid warnings for negative values.
      makefiles: Pass the target flags to winegcc.
      winegcc: Don't pass the as/ld/nm commands to winebuild.
      winmm: Disable system thread if poll() support is missing.
      programs: Don't make apps Unicode if they don't use the command line.
      winepath: Fixed the wmain() definition.
      include: Undefine a few Unicode macros that conflict with interface functions.
      rsaenh: Rename the HANDLETABLE structure to avoid conflicts with wingdi.h.
      jscript: Rename the GetObjectW variable to avoid conflict with the function of the same name.
      setupapi: Don't use 'interface' as variable name, since it can be defined to a keyword.
      include: Moved VWIN32 ioctl definitions out of winioctl.h.
      dbghelp: Fix handling of empty file regexp (Coverity).
      user32/tests: Fix some window test failures on various Windows platforms.
      widl: Change write_type_def_or_decl and write_type_decl to take an argument name instead of a printf format.
      user32/tests: Try to fix some more failures in the message test.
      winmm/tests: Don't test upper bound on sound duration, it's not guaranteed.
      configure: Move down the X11 checks to allow defaulting to --without-x for the Windows build.
      configure: Print an error and fail if we don't have libpthread.
      configure: Set the target flags from the --host option even if cross-compiling is not detected.
      winegcc: Hardcode the various gcc tool names when cross-compiling.
      loader: Start phasing out the LinuxThreads support.
      dbghelp: Avoid size_t in a trace.
      user32/tests: Fix Z-order tests in the presence of owned popups.
      user32/tests: Add some more optional messages we get on Windows.
      user32/tests: Print the wrong accelerator values in the resource test.
      user32/tests: Better handling of the *.* wildcard in the listbox test.
      user32/tests: Fix more message tests on XP and Vista.
      user32/tests: Skip tests if we fail to inject mouse or keyboard events.
      user32/tests: GetClassInfo doesn't set last error reliably, remove test.
      user32/tests: Cope with lack of support for color cursors.

Alistair Leslie-Hughes (14):
      mshtml: Add missing StyleSheet interfaces.
      mshtml: Add missing coclass's.
      mshtml: Add support for IHTMLStyle3 interface.
      mshtml: Add support for IHTMLStyle4 interface.
      shdocvw: OnAmbientPropertyChange should refresh all properties with a DISPID_UNKNOWN.
      shdocvw: Correct OnAmbientPropertyChange regression.
      mshtml: Implement IHTMLStyle_put_fontWeight.
      mshtml: Implement IHTMLStyle_get_backgroundColor.
      msxml3: Use our parent doc if we don't have one.
      mshtml: Implement IDispatch for IHTMLLocation.
      mshtml: Do a case-insensitive compare of type.
      mshtml: Implement IHTMLStyle_get_paddingLeft.
      mshtml: Implement IHTMLStyle_put_textDecorationLineThrough.
      mshtml: Implement IHTMLStyle_put_textDecorationUnderline.

Andre Wisplinghoff (1):
      comdlg32: Update German and French translation.

Andrew Talbot (21):
      wininet: Declare some functions static.
      winmm: Declare some functions static.
      wintrust: Declare a functions static.
      wnaspi32: Declare some functions static.
      ole32: Remove superfluous shadow variables.
      cabinet: Declare a function static.
      itss: Remove unused function.
      inetcomm: Remove unused function.
      dsound: Remove unused function.
      dplayx: Remove unused functions.
      dbghelp: Remove unused function.
      msi: Remove unused functions.
      netapi32: Remove unused functions.
      cabinet: Declare a function static.
      qcap: Remove an unused function.
      riched20: Remove unused functions.
      gphoto2.ds: Replace malloc() with HeapAlloc().
      itss: Replace malloc() with HeapAlloc().
      winedos: Replace malloc/calloc with HeapAlloc().
      winemp3.acm: Replace malloc() with HeapAlloc().
      winenas.drv: Replace malloc() with HeapAlloc().

André Hentschel (1):
      winemaker: Add odbccp32 to default link list.

Aric Stewart (33):
      msctf: Add ITfDocumentMgr interface.
      msctf: Implement SetFocus and GetFocus.
      msctf: Only 1 ITfThreadMgr is created per thread.
      include: Add beginning textstor.idl.
      msctf: Implement stub ITfContext.
      msctf: Implement ITfDocumentMgr::Push.
      msctf: Implement ITfDocumentMgr::Pop.
      msctf: Implement ITfDocumentMgr::GetTop.
      msctf: Implement ITfDocumentMgr::GetBase.
      msctf: Add definition of ITfSource interface.
      msctf: Add ITfSource interface to Context.
      msctf: Add ITfSource interface to ThreadMgr.
      msctf: Add ITfSource interface to DocumentMgr.
      advapi32: Add Security Label sids used by IE7.
      msctf: Add stub implementation of ITfInputProcessorProfiles.
      msctf: Implement InputProcessorProfiles::GetCurrentLanguage.
      msctf: Implement ITfInputProcessorProfiles::Register.
      msctf: Implement ITfInputProcessorProfiles::AddLanguageProfile.
      msctf: Stub implementation of ITfCategoryMgr.
      msctf: Implement ITfCategoryMgr::RegisterCategory.
      msctf: Flesh out spec file with stubs.
      msctf: Implement TF_CreateThreadMgr.
      msctf: Implement TF_GetThreadMgr.
      mlang: Handle non Japanese case in ConvertUnknownJapaneseToUnicode.
      msctf: Add sink framework and implement ITfTextEditSink in Context.
      msctf: Stub for SetInputScope.
      msctf: Stub implementation of SetInputScopes.
      msctf: Add stub ITextStoreACPSink.
      msctf: Define ITextStoreACP.
      msctf: When a Context is created connect to the ITextStoreACP if provided and create and advise our ITextStoreACPSink.
      msctf: Define ITfContextOwnerCompositionSink. This is implemented by a tsf aware application.
      msctf: Hook up ITfContextOwnerCompositionSink if present.
      wininet: Print better stubs for the internet options IE7 uses.

Artem Reznikov (2):
      avifil32: Ukranian translation.
      wininet: Ukranian translation.

Aurimas Fischer (3):
      include: Add GdipSetStringFormatFlags prototype.
      gdiplus: Implement GdipSetStringFormatFlags with tests.
      notepad: Add Lithuanian translation.

Austin English (1):
      configure.ac: Check for icps_outhist struct.

Christian Costa (4):
      d3dxof: Fix object files size limitation by mapping them into memory.
      d3dxof: Make is_keyword handle end of file correctly.
      d3dxof: Cleanup IDirectXFileImpl_CreateEnumObject a bit.
      d3dxof: Add support for DXFILELOAD_FROMRESOURCE source.

Christoph von Wittich (1):
      kernel32: DeviceIoControl: lpBytesReturned must not be NULL if lpOverlapped is NULL.

David Adam (17):
      d3dx9_36: Fix failing tests in Windows.
      d3dx8: Allow output pointer to be equal to input pointer.
      d3dx8: Simplify some functions.
      d3dx8: Implement D3DXFresnelTerm.
      d3dx8: Implement D3DXIntersectTri.
      d3dx9_36: Implement D3DXIntersectTri.
      d3dx9_36: Remove useless traces.
      d3dx8: Move some functions into core.c to match the header file layout.
      d3dx8: Remove useless includes.
      d3dx8: Change the debug channel into the generic d3dx.
      d3dx8: Implement D3DXGetFVFVertexSize.
      d3dx8: Implement D3DXComputeBoundingSphere.
      d3dx8: Implement D3DXComputeBoundingBox.
      d3dx9_36: Implement D3DXComputeBoundingBox.
      d3dx9_36: Implement D3DXComputeBoundingSphere.
      d3dx9_36: Implement D3DXGetFVFVertexSize.
      d3dx9_36: Remove a duplicate declaration for D3DXGetFVFVertexSize.

David Hedberg (2):
      msvcrt: Implement _mbcjistojms.
      winecfg: Fix for paths containing utf-8.

Detlef Riekenberg (10):
      comctl32: Make the status control height dpi and theme aware.
      comctl32/tests: Make the test dpi and theme aware by using SM_CYSIZE.
      winspool/tests: Run more tests on Win64.
      winspool: Enable environment "Windows x64" for Win64.
      localspl: Enable environment "Windows x64" for Win64.
      spoolss: Move routing functions to a seperate file.
      localspl: Move provider functions to a seperate file.
      winspool: Move EnumPortsW to the backend.
      spoolss: Implement EnumMonitors.
      comctl32/tests: The status control use a different formula in XP and up for the height.

Dmitry Timoshkov (6):
      winex11.drv: The MAT2 parameter of GetGlyphOutline is mandatory.
      wineps.drv: The MAT2 parameter of GetGlyphOutline is mandatory.
      gdi32: The MAT2 parameter of GetGlyphOutline is mandatory.
      gdi32: Add a test for the MAT2 parameter of GetGlyphOutline, make it pass under Wine.
      mlang: Get rid of ICOM_THIS_MULTI macro.
      gdi32: Make sure that World2Vport DC transformation is valid before using it.

Dylan Smith (22):
      richedit: Use width from EM_SETTARGETDEVICE for wrapping.
      richedit: Implement EM_GETTEXTMODE.
      richedit: Fixed EM_FINDTEXT to pass todo tests.
      richedit: Simplified the character length delete protection.
      richedit: Removed unnecessary calls to ME_WrapMarkedParagraphs.
      richedit: Properly destroy context in two places.
      richedit: Get the paragraph with ME_RunOfsFromCharOfs.
      richedit: Accept paragraph as parameter for ME_CharOfsFromRunOfs.
      richedit: Add paragraph field to wrap context to avoid searching for it.
      richedit: Removed incorrect FIXME comment.
      richedit: Avoided searching for adjacent paragraphs through runs.
      richedit: Wrap even when message says not to repaint.
      richedit: Directly get start and end of text on Ctrl-Home or Ctrl-End.
      richedit: Simplified ME_UpdateSelectionLinkAttribute.
      richedit: Prevent string trunction due to NULL characters.
      richedit: Avoid duplication in make string functions using ME_MakeStringB.
      richedit: Removed some conditions that are always taken.
      richedit: Got rid of useless function ME_VPosToPos.
      richedit: Removed ME_StrLen and ME_StrVLen field access functions.
      richedit: Got rid of ME_GetCharFwd and ME_GetCharBack.
      richedit: Removed ME_StrRelPos, ME_StrRelPos2, & ME_PosToVPos functions.
      richedit: Store paragraph in cursors.

Eric Pouech (1):
      dbghelp: Fix bad call to free() instead of pdb_free().

Erich Hoover (1):
      wcmd: Properly cleanup redirects when there are no in/out/error pipes.

Florian Tobias Schandinat (2):
      winedos: Improve PIT emulation.
      winedos: Adjust get_timer_val calls to prevent buffer overflow.

Francois Gouget (34):
      twain_32/tests: Add a trailing '\n' to ok() calls.
      shell32/tests: Remove spaces before a '\n's.
      taskmgr: Reorder some functions to avoid forward declarations in applpage.c.
      taskmgr: Reorder some functions to avoid forward declarations in graphctl.c.
      taskmgr: Make TrayIcon_GetProcessorUsageIcon() static.
      rsaenh: {alloc,release}_handle_table() are not used so remove them.
      d3dx8/tests: Make compare() static.
      progman: Reorder some functions to avoid forward declarations in dialog.c.
      winex11.drv: X11DRV_XF86VM_SetExclusiveMode() is unused so remove it.
      xrandr: X11DRV_XRandR_Cleanup() is unused so remove it.
      winedos: Remove spaces before '\n's.
      notepad: Make the Lithuanian resources SUBLANG_NEUTRAL.
      user32: Remove unneeded forward declarations in edit.c.
      user32: Reorder some functions to avoid forward declarations in edit.c.
      user32: Make EditWndProcW() static, fix its documentation.
      urlmon: Make create_http_protocol() static.
      winealsa.drv: ALSA_PeekRingMessage() is not used anymore so remove it.
      shell32: Remove some unused functions in clipboard.c.
      shell32: Get rid of TRASH_ELEMENT and TRASH_DisposeElement().
      shell32: HCR_GetDefaultIconFromGUIDW() is unused so remove it.
      taskmgr: Make some functions static.
      progman: Make DIALOG_Symbol() static.
      d3dx9_36: The d3dx debug channel is unused so remove it.
      uxtheme: UXINI_ResetINI() is unused so remove it.
      user32: LookupIconIdFromDirectory16() is unused so remove it.
      shell32: Make ILGetDisplayNameExA() static, remove WINAPI and fix its documentation.
      winapi_test: Improve the usage message.
      twain_32/tests: Add a trailing '\n' to an ok() call.
      Assorted spelling fixes.
      shell32: Make SHILCreateFromPathA() static and remove WINAPI.
      d3dx8: The d3dx debug channel is unused so remove it.
      mssign32: The mssign32 debug channel is unused so remove it.
      ntdll/tests: Remove WINAPI on static functions where not needed.
      wined3d: Add a trailing '\n' to shader_addline() calls.

Gerald Pfeifer (2):
      comctl32: Simplify four functions by removing unused parameters.
      wnaspi32: Invoke ASPI_SendASPICommand() on non-Linux platforms, too.

Hans Leidekker (3):
      mlang: Implement IMLangFontLink2_GetScriptFontInfo.
      mlang: Export a couple of functions by ordinal.
      wininet: Properly drain content for chunked transfers.

Huw Davies (3):
      gdi32: Correct the font family values returned in the text metrics.
      gdi32: Add missing serif types.
      gdi32/tests: Use the ANSI text metrics so the tests work on win9x.

Hwang YunSong(황윤성) (2):
      cryptui: Updated Korean resource.
      crypt32: Updated Korean resource.

Jacek Caban (10):
      jscript: Add IActiveScriptParse64 declaration and use it on Win64.
      mshtml: Return nsIDocumentObserver as nsISupport of nsDocumentObserver object.
      mshtml: Wine Gecko 0.9.1 release.
      mshtml: Remove document observer before releasing nsdoc.
      activscp.idl: Added IActiveScriptParseProcedure*64 interfaces and use it on Win64.
      wininet: Move FtpOpenFile[AW] implementation to avoid forward declaration.
      wininet: Fixed handling empty string password.
      wininet: Added QueryDataAvailable implementation for FTP files.
      wininet: Make sure that we have some data buffered before sending INTERNET_STATUS_REQUEST_COMPLETE notification.
      wininet: Don't send INTERNET_STATUS_REQUEST_COMPLETE notification from FTP_Connect.

Jeremiah Flerchinger (1):
      winedos: Unify Fake BIOS & VGA display mode selection information and algorithms.

Jeremy White (17):
      twain_32: Add the ability to thoroughly test basic capability types, and add that test for the one capability Wine supports, ICAP_XFERMECH.
      sane.ds: Pass MSG_QUERYSUPPORT requests to the capability driver.
      sane.ds: More completely implement ICAP_XFERMECH, with helper functions.
      sane.ds: Simplify SANE_SaneCapability.
      sane.ds: Rearrange function position to avoid the need for forward function declarations.
      sane.ds: More correctly stub CAP_XFERCOUNT, and tests.
      sane.ds: Eliminate incorrect TWRC_FAILURE return.
      sane.ds: Return a 0 for MSG_QUERYSUPPORT even for capabilities we don't support.
      sane.ds: Add partial stub support for ICAP_PIXELTYPE, with tests. Fixes a first crash in Adobe Acrobat scanning support.
      sane.ds: Add support for CAP_UICONTROLLABLE.
      twain_32: Change get requirements such that we require only a minimum level of support.
      twain_32: Prevent an incorrect test warning message on get checks.
      sane.ds: Add stub support for ICAP_COMPRESSION.
      sane.ds: Revise the logic around processing events to reflect the need for us to generate and post a message to drive Sane events.
      sane.ds: Indicate that we used a modal dialog.
      sane.ds: Remove a duplicate assignment.
      sane.ds: Add a log message to flag unsupported operations.

Juan Lang (67):
      crypt32: Remove test of a corner case that failed on older crypt32 versions.
      mapi32: Fix many test failures on Win9x.
      mapi32: Fix some test failures on Win9x.
      mapi32: Fix a couple more test failures on Win9x.
      secur32: Fix a handful of test failures on Win9x.
      wintrust: Use GetSystemDirectory rather than GetWindowsDirectory to find the CatRoot directories.
      rsaenh: Fix failing tests on Windows ME.
      shell32: Fix a couple test failures on NT4.
      shell32: Use list of allowed PIDL types rather than assuming there are no more than two.
      mapi32/tests: Fix typo.
      shell32: Remove a test that fails on Win64.
      shell32: Use the normal list checks for CSIDL_PERSONAL.
      shell32: Remove an obsolete comment.
      mshtml: Pass bytes written pointer to WriteFile.
      advapi32: Test LookupAccountName with the computer name as the account name.
      advapi32: Support the computer name as an account name in LookupAccountNameW.
      mapi32: Fix failing tests on some Win9x versions.
      shell32: Fix a few tests on Windows 98 and Vista.
      crypt32: Fix some test failures on older versions of Windows.
      crypt32: Fix a regression in chain tests.
      cryptui: Prompt whether to export the private key from CryptUIWizExport.
      cryptui: Make a copy of export info in CryptUIWizExport.
      cryptui: Set default export format based on whether the private key is to be exported.
      cryptui: Enable/disable PFX choice based on whether the private key is to be exported.
      cryptui: Add a password page to the export wizard.
      cryptui: Only show password page if the private key is to be exported.
      cryptui: Validate password in export wizard.
      cryptui: Skip password page when moving backward through the export wizard if it wasn't shown in the first place.
      cryptui: Implement exporting to a PFX file.
      cryptui: Correct return value of the user cancels the export wizard.
      cryptui: Ensure a certificate's private key is exportable before allowing it to be selected for export.
      cryptui: Save private key in temporary store when exporting it.
      cryptui: Delete the private keys if requested when they're successfully exported.
      rpcrt4: Don't abort reading from a pipe if a single read is short.
      crypt32: Fix a few more test failures on older versions of Windows.
      crypt32: Fix some tests on Windows 98.
      crypt32: Relax a test whose results are ignored on Windows anyway.
      crypt32: Fix a compiler warning.
      crypt32: Fix a test failure on Windows 98.
      crypt32: Fix a typo.
      crypt32: Include more info about skipped checks in skip message.
      crypt32: Add chain debugging channel for debugging certificate chaining errors.
      crypt32: Change some traces to the chain channel.
      crypt32: Don't assume intermediate certificates are allowed to be CAs.
      crypt32: Set the info status on the last element of a chain even if its issuer can't be found.
      kernel32: Add more tests for getting/setting a named pipe's state.
      crypt32: Remove a test that fails on some Windows 98 systems, and document it.
      crypt32: Fix a couple tests on some Windows 98 systems.
      crypt32: Fix test failures on some Windows 98 systems.
      crypt32: Support an alternate OID in order to fix a test on some Windows 98 systems.
      crypt32: Fix a couple test failures on some Windows 98 systems.
      wintrust: Don't fail if a registry value doesn't exist.
      wintrust: Remove a couple tests that fail on a variety of systems.
      wintrust: Fix a couple tests on a variety of systems.
      crypt32: Removed unneeded strcmp.
      wintrust: Fix typo.
      shell32: Let caller determine whether a shell path function must succeed or fail.
      setupapi: Add stub entries for CM_Query_And_Remove_SubTreeA/W and CM_Query_And_Remove_SubTree_ExA/W.
      crypt32: Allow an alternate chain policy status for broken systems.
      netapi32: Fix tests on systems with reduced privilege.
      advapi32: Fix a test failure on systems that are domain members.
      crypt32: Fix a few test failures on some Windows 98 systems.
      kernel32: Fix some test failures on systems with reduced privilege.
      kernel32: Log more information in case of a test failure, and don't run tests that are guaranteed to fail.
      kernel32: Fix some more failures on systems with reduced privilege.
      kernel32: Fix test failures on NT4.
      crypt32: Fix some test failures on Windows 98.

Ken Thomases (1):
      winecoreaudio.drv: Add support for waveOutBreakLoop/WODM_BREAKLOOP.

Lei Zhang (1):
      oleaut32/tests: Add a VarFormat test for date and time.

Luis C. Busquets Pérez (1):
      d3dx8: Add tests for D3DXGetFVFVertexSize.

Marcus Meissner (24):
      shell32: Fixed potential buffer overwrite in execute_from_key (Coverity).
      advapi32: Fixed NULL ptr deref in QueryServiceConfig2A (Coverity).
      services: Handle realloc failures better (Coverity).
      kernel32: Handle username conversion failure (Coverity).
      oleaut32: Removed useless NULL ptr check (Coverity).
      winedbg: Check for buffer being NULL.
      msacm32: Add missing HeapALloc failure checks (Coverity).
      wrc: Free type to avoid leaks (Coverity).
      dmloader: Fixed some pointer read/write checks (Coverity).
      dbghelp: Check for wImageName being NULL (Coverity).
      winhlp32: Check hlpfile for being NULL (Coverity).
      dmstyle: Another NULL ptr check added (Coverity).
      itss: Move buffer initialization a bit up (Coverity).
      dmime: Added missing NULL ptr check (Coverity).
      mshtml: Fixed last argument to MultiByteToWideChar.
      atl: Fixed second buffer size to MultiByteToWideChar.
      mshtml: Fixed second buffer argument to MultiByteToWideChar.
      urlmon: Fixed target buffer length to MultiByteToWideChar.
      cryptui: Check NULL ptr differently (Coverity).
      mshtml: Call install_cab_file() with name directly on non-Wine.
      advapi32: Fixed size of userName.
      mshtml: Fixed size passed to MultiByteToWideChar.
      advapi32: LookupAccountNameW removed redundant NULL check (Coverity).
      winegcc: Added some strarray_free() (Coverity).

Michael Stefaniuc (29):
      jscript: Remove superfluous pointer casts.
      wined3d: Remove some unused defines.
      wined3d: Remove superfluous pointer casts.
      include: Change some DWORD to DWORD_PTR in mmddk.h.
      twain_32/tests: Don't leak memory on an error path (Smatch).
      include: Change some DWORD to DWORD_PTR in msacm.h.
      include: Remove struct PORTALLOC from mmddk.h.
      include: Change some DWORD to DWORD_PTR in msacmdrv.h.
      user32/tests: Remove superfluous pointer casts.
      winhttp: Remove superfluous pointer casts.
      winmm: SendDriverMessage takes LPARAM as 3rd and 4th argument.
      winejack.drv: The dwParam1/dwParam2 function arguments are DWORD_PTR.
      comctl32/tests: Remove superfluous pointer casts.
      spoolss: Add missing LeaveCriticalSection on error path (Smatch).
      riched20: Fix some Win64 compiler warnings.
      include: Change two DWORD to DWORD_PTR in vfw.h to match the DDK.
      oleaut32: Remove superfluous pointer casts.
      winenas.drv: dwParam1 and dwParam2 cwhave the type DWORD_PTR.
      ole32: Use GetWindowLongPtr/SetWindowLongPtr for pointers.
      msvfw32: Remove some Win64 compiler warnings.
      wineesd.drv: Remove superfluous pointer casts.
      wineesd.drv: dwParam1 and dwParam2 have the type DWORD_PTR.
      ole32: Remove superfluous pointer casts.
      imm32: Make space for a 64bit pointer in the IMM window.
      dsound: Arguments 3,4,5 of a CALLBACK are of type DWORD_PTR.
      atl: Remove superfluous pointer casts.
      tools: Remove unused alloca.h include.
      comctl32: Remove an one-off macro.
      comctl32: Remove superfluous pointer casts.

Mikołaj Zalewski (5):
      comctl32: toolbar: Move common TB_ADDBUTTONS and TB_INSERTBUTTONS code into a helper function, makes TB_INSERTBUTTON with a text perform a recalc (with testcase).
      comctl32: toolbar: Use different function for dumping of TBUTTON_INFO and TBBUTTON.
      comctl32: toolbar: TB_SETBUTTONINFO should do a relayout instead of a recalc.
      comctl32: toolbar: Unlike in listview, TB_SETEXTENDEDSTYLE takes the actual style, not a mask.
      comctl32: toolbar: Only changing TBSTYLE_EX_MIXEDBUTTONS should cause a recalc.

Nikolay Sivov (15):
      gdiplus: Implemented GdipIsEqualRegion.
      gdiplus: Implemented GdipTranslateRegion.
      gdiplus: Implemented GdipTranslateRegionI.
      gdiplus: Implemented GdipGetRegionBounds/GdipGetRegionBoundsI.
      gdiplus: Implemented GdipTranslateClip/GdipTranslateClipI.
      gdiplus: Implemented GdipCreateBitmapFromHICON (with tests).
      gdiplus: Implemented GdipGetClipBounds/GdipGetClipBoundsI.
      gdiplus: Implemented GdipSetClipHrgn.
      gdiplus: Add testing for ObjectBusy in some Graphics methods.
      gdiplus: Implemented GdipFillRegion.
      gdiplus: Implemented GdipGetLogFontA.
      propsys: Stub for PSRegisterPropertySchema.
      reg: Don't close not open reg key (Coverity).
      gdiplus: Some tests for LinearGradientBrush.
      gdiplus: Handle zero width/height in GdipAddPathPie.

Paul Bryan Roberts (1):
      ntdll: Avoid potential infinite loop.

Paul TBBle Hampson (1):
      winefile: Don't use child after it has been freed.

Paul Vriens (16):
      wininet/tests: Fix tests failures on W2K and below and some early XP.
      kernel32/tests: Fill the buffer and check for double-NULL to show a bug in Wine.
      kernel32/tests: Fix some tests on Win9x and WinME (GetPrivateProfileSection).
      kernel32/tests: Fix some test failures on Win9x and WinME.
      kernel32/tests: Fix remaining failures on Win9x and WinME.
      riched32/tests: Skip some tests on Win9x, WinME and NT4.
      winetest: Make sure we can test .NET dlls on Windows.
      fusion/tests: Do the conversion before testing.
      fusion/tests: Run tests correctly on Win98.
      fusion/tests: Fix some test failures on systems with .NET 1.1.
      fusion/tests: Fix a test failure on Win64.
      fusion/tests: Fix some tests failures on .NET 1.1 (and Win98).
      fusion/tests: Skip tests on .NET 1.1.
      fusion/tests: Mark some tests as broken() on .NET 1.0.
      fusion/tests: Mark test as skipped when we don't have enough rights.
      fusion/tests: Fix some typos.

Ricardo Filipe (1):
      include: Fix commdlg hook procedures return type.

Rob Shearman (12):
      Change parameter type from size_t to SIZE_T for MIDL_user_allocate.
      ole32: Initialise more of the context passed into user marshaling functions in the tests for these functions.
      oleaut32: Initialise more of the context passed into user marshal functions in the tests for these functions.
      ole32: Fix an ole2 test failure on Win9x and NT4.
      rpcrt4: Change the test of CStdStubBuffer->pPSFactory to only test for the field not being NULL.
      ole32: Fix CLIPFORMAT marshalling on 64-bit platforms by not using the wireCLIPFORMAT type.
      ole32: Fix some test failures in the HGLOBAL marshalling tests on 64-bit Windows.
      ole32: Output the size that we didn't expect in the HGLOBAL marshalling tests.
      ole32: Add framework in the ole2 tests for having optionally called methods.
      ole32: Allow some optional methods to be called in the OleCreate tests.
      ole32: Fix some test failures in the free threaded marshaller tests on Win9x & NT4.
      ole32: Fix a test failure in the moniker tests on Win9x.

Stefan Dösinger (4):
      WineD3D: Put vertex shader duplication infrastructure in place.
      wined3d: Properly set the fog frag coord according to the FOGTABLEMODE.
      wined3d: Implement EXP and EXP2 fog in GLSL.
      d3d9: Test table fog and exp fog in the shader fog test.

Stefano Guidoni (4):
      msadp32: ADPCM allows other sample rates other than 8000, 11025, 22050 and 44100.
      msadp32: Block align size is proportional to the number of channels.
      msadp32: MSDN suggests "wfx.nBlockAlign * 2 / wfx.nChannels - 12" as the formula for calculating wSamplesPerBlock.
      msadp32: ADPCM_FormatSuggest compare source format tag with destination format tag.

Ulrich Czekalla (1):
      user32: Don't scale draw text margin params by character width units.

Vincent Pelletier (5):
      dinput: Move gain support from effect to device.
      dinput: Fix effect direction conversion from DIEFF_CARTESIAN coordinates.
      msadp32.acm: Block align the adpcm extra data.
      msadp32.acm: Make destination aligned on destination block size (copy/paste error).
      ddraw: Use ddraw_from_d3d7 to make a (IDirectDrawImpl *) from a (IDirect3D7 *).

Vitaliy Margolen (3):
      dinput: Consume mouse & keyboard events in exclusive mode.
      comctl32: Fix propsheet size calculation.
      comctl32: Use style to distinguish between embedded and standalone propsheets.

--
Alexandre Julliard
julliard@winehq.org
