The Wine development release 1.1.7 is now available.

What's new in this release (see below for details):
  - Improved device management for DOS drives.
  - Many Richedit fixes.
  - Various installer fixes, particularly for IE 7.
  - First steps of Direct3D 10 implementation.
  - Various bug fixes.

The source is available from the following locations:

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

   2327  Graphics not rendered with VB6 application using graph server component
   2608  Might and Magic VI wont run until "DeShrinker" program is run on mss32.dll
   2922  Unhandled Exception when starting F18.EXE
   3555  ToolBook Assistant 2004 doesn't run
   3972  .NET Framework 2.0 installation fails on installation of assemblies
   4298  Potential metafile NULL-pointer dereference
   4381  Cannot change focus with TAB from edit control
   4386  Font rendering wrong.
   4783  Network Notepad - .wmf files not rendered
   5022  Wine does not define CLSID_NULLRenderer
   5070  Can't install North Carolina RealFast forms
   5296  Kidspiration 1.0a install fails
   5351  Windows Installer 3.1 cannot install because of non-standard drive labeling
   5455  WINSPOOL: Delphi-application crashes on start after working with winspool
   5542  older D3D games slowed down after upgrading wine from 0.9.15 to 0.9.16
   5930  Graphic glitches in Alien Shooter
   6224  Video hardware detection problems in Titan Quest
   7035  Drive C: shows up twice in the Age of Mythology installer
   7225  Warhammer Mark of Chaos Will not run
   7456  Sigma Photo Pro 2.1 installer crashes at very very end
   7531  GSAK application freezes when Gecko is installed
   7593  Turnpike email client fails to install
   7900  ShellExecuteEx can fail for paths with spaces in them
   8029  Heart of Darkness doesn't run or output any error.
   8179  graphical glitches in Project Eden
   8184  Oblivion Some shader effects cause screen to go vomit green
   8214  Swat 2 blocky screen
   8642  reflective objects in gtasa look weird
   8920  Adobe Dreamweaver 8: help doesn't work
   8921  Adobe Dreamweaver 8: macros don't play back?
   9188  Silkroad online installer crash
   9295  IMediaPosition not implemented
   9478  Adobe Dreamweaver 8 autocompletion
   9511  Wine uses wrong icon on desktop for installed application
   9628  msiexec command line parsing incorrect
  10107  Wine allows you to install Adobe Photoshop CS2 Trial even if you decline the license
  10486  Rayman 3 Demo doesn't shows 'loading' screens (regression?)
  10504  Blogjet crashes on startup
  10630  Madden NFL 08 run crashes with dsound error and page fault
  10874  Jumpstart  Mystery Club vol.1 fails to start
  11014  Siemens ProCenter MSI installer fails
  11122  xkbd: non-US layout results in wrong key mapping
  11531  Richard Burns Rally - Trees/buildings/fences disappear after a while
  11590  Graphics regression in Uplink Laughing Man
  11640  Unable to use multiplayer in Sins of a Solar Empire: unknown address family
  11671  Corel Painter X
  11673  WiX cannot validate created .msi, due to lacking MsiDatabaseMerge
  11695  Truespace demo crashes on launch.
  11739  Farm frenzy (shell:SHGetValueW)
  11759  Microsoft Silverlight installer - unimplemented functions
  11795  Oblivion giant tree sprite(s) follow the player
  11867  StackOverflowException from mscorwks running .NET 2 application
  11881  wine iexplore crashes when started
  11990  Script and Field Lists in FileMaker Pro are blank
  12058  No car engine sounds in TrackMania United
  12063  SDL Edit (SDLX) missing icons on toolbar
  12117  Some Milkdrop visualizations cause Direct3D window to be split oddly
  12146  Flatout 1 draws shadows incorrectly
  12188  Complex Shader causes sky in Everquest 2 to turn black
  12301  Anycount 5.0 fails to install
  12307  firefox 3 crash on some web pages [dogfood]
  12404  Lotus Notes doesn't show window contents after minimize then unminimize
  12485  BitBlt does not ignore source clipping
  12522  FEAR combat 1.07 won't start.
  12581  Wine crashes trying to look up word in Gyldendal's røde ordbøger
  12587  multi line widget broken
  12655  RealPlayer 11 Starts, but suffers a runtime error when selecting a menu
  12776  input line truncated in command-line debugging program 'kd'
  13073  Titan Quest Immortal Throne 1.30 graphic bug
  13230  msi: msi.ok fails in Opensolaris
  13232  Warcraft 3 worldedit.exe fails to start.
  13241  ALSA Midi port names
  13338  cygwin installer crashes in /etc/postinstall/00bash.sh
  13413  itunes initial license dialog display richtext in raw form
  13503  Photoshop CS2 - Dialog windows opens behind active image.
  13585  Quicken Premier 2008: Crashes when trying to use a data file.
  13642  dogfood: InterPoker on Linux crashes
  13753  Glitches on icons in wow
  13838  AutoCAD 2005 setup : Missing backslash in registry entry and profile path
  14229  winedbg can't dump stack of functions that take float args?
  14269  Shareaza does not save preferences
  14297  winhelp: Links to a different part of the current page don't work
  14358  fusion: installation .NET assemblies might fail due to incorrect parsing of CLR metadata structures and tables
  14380  Changing Skins in Shareaza causes crash
  14516  Full-Screen Glow Effect in World of Warcraft is shifted (in DirectX)
  14566  comctl32_test header: crash on win9x in test_hdm_filterMessages at DestroyWindow
  14571  ole32.CoGetCallerTID needed for VS.NET 2005
  14580  mshtml_test htmldoc: timeout / crash on win9x
  14707  winedbg crashes while trying to debug an application with a pdb file
  14753  Keyboard input is ignored in Abe's Exoddus and Oddysee games
  14829  wininet: http.ok hangs in Solaris, but not Linux
  14839  kernel32: pipe.ok fails in OpenSolaris but not Linux
  14840  kernel32: thread.ok fails in OpenSolaris but not Linux
  15243  Google Chrome URL bar edits and text selections always begin at start of bar
  15294  Openoffice.org 3.0 RC1 installs but apps can't be started.
  15318  Google Chrome pasting in the url field pastes it twice
  15352  TSLPatcher: rtf header should be centered, instead half outside window
  15374  The Witcher - Game cannot be registered
  15390  VGA mode 19 color palettes incomplete
  15405  winresrc.h is incomplete
  15551  SafeDisc regression
  15598  Full Screen mode in World of Warcraft (WoW) broken in 1.1.6 with Gnome
  15608  Wine (or program) can't wait for end of execution, while my program run another .exe or .bat program
  15643  wingdi.h does not define R2_LAST macro
  15650  Wine crashes if it is built with -fomit-frame-pointer
  15694  LEGO Star Wars sounds not playing
  15696  Dragon NaturallySpeaking 10 will not install -- says needs IE5 or later

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

Changes since 1.1.6:

Alexander Morozov (1):
      ntoskrnl.exe: Initialize some IRP fields to prevent using bad pointers by IofCompleteRequest.

Alexandre Julliard (63):
      comcat: Get rid of NULL checks on the This pointer.
      comcat: Moved dll registration to ole32.
      comcat: Simplify the class factory implementation and make it more similar to the other ones in ole32.
      comcat: Get rid of the redundant IUnknown vtable for the manager implementation.
      comcat: Moved all the implementation to ole32 where it belongs.
      configure: Moved the crosstest checks so that they are done for all platforms.
      mountmgr: Specify the drive type as a DWORD instead of a string.
      mountmgr: Return the drive unique id in IOCTL_MOUNTMGR_QUERY_POINTS.
      make_makefiles: Add support for .rh files.
      dsound: Avoid use of stdint types.
      winecfg: Store the drive serial number as a number instead of a string.
      winecfg: Store the drive label as Unicode.
      kernel32: Delete the .windows-label file if the label is empty.
      user32/test: Fix a couple of message test failures on Windows.
      mountmgr: Enforce a minimal length for the mount point id.
      mountmgr: Store mount points as a list instead of an array.
      mountmgr: Store the device name in the mount point structure.
      winecrt0: Add missing WINAPI on driver entry point.
      avifil32: Convert source files to utf-8.
      d3d9: Convert source files to utf-8.
      ddraw: Convert source files to utf-8.
      dpnet: Convert source files to utf-8.
      kernel32: Convert source files to utf-8.
      msdmo: Convert source files to utf-8.
      msrle32: Convert source files to utf-8.
      ole32: Convert source files to utf-8.
      rpcrt4: Convert source files to utf-8.
      shell32: Convert source files to utf-8.
      user32: Convert source files to utf-8.
      wined3d: Convert source files to utf-8.
      winedos: Convert source files to utf-8.
      winex11: Convert source files to utf-8.
      include: Convert source files to utf-8.
      programs: Convert source files to utf-8.
      server: Convert source files to utf-8.
      tools: Convert source files to utf-8.
      Convert remaining source files to utf-8.
      configure: Force -m32 option on x86_64 even if CC is already defined.
      wldap32/tests: Don't crash if ldap_search_ext_sA fails.
      wldap32: Map Unix error codes to Windows ones for all functions.
      server: Added a request to unlink an object from its namespace.
      ntoskrnl: Implemented IoDeleteSymbolicLink.
      mountmgr: Include some system headers in mountmgr.h.
      mountmgr: Moved the harddisk device driver to device.c.
      mountmgr: Create devices and symlinks for dynamic drives too.
      mountmgr: Return the drive pointer from get_dosdevices_path().
      mountmgr: Convert the registry calls to Unicode.
      mountmgr: Query the drive type from the registry for the initial creation.
      mountmgr: Create a new harddisk device for dynamic harddisk drives.
      mountmgr: Create a PhysicalDrive symlink for all harddisk devices.
      mountmgr: Reuse create_disk_device to create the initial harddisk0 device.
      configure: Explicitly mention that we need 32-bit libraries to try to avoid some invalid bug reports.
      winecfg: Update the drives only when they have changed, instead of trying to compare with the current setup.
      msiexec: Fix initial state of the argument parsing state machine.
      mountmgr: Store the contents of the device symlink in the drive object.
      mountmgr: Allow to specify the drive letter explicitly when creating/removing a drive.
      mountmgr: Add a Wine-specific ioctl to define a drive for a Unix path.
      mountmgr: Add a Wine-specific ioctl to query the Unix information about a drive.
      winecfg: Use an ioctl to the mount manager to define drives.
      winecfg: Store the Unix device if any in the drive configuration.
      winecfg: Load the existing drive config from mountmgr instead of relying on QueryDosDevice.
      mpr: Use a mountmgr ioctl to retrieve the UNC name for a drive.
      kernel32: Return the Windows symlink in QueryDosDevice instead of the Unix one.

Andrew Talbot (12):
      gdi32: Sign-compare warnings fix.
      imm32: Sign-compare warnings fix.
      itss: Sign-compare warnings fix.
      kernel32: Sign-compare warnings fix.
      mcicda: Sign-compare warning fix.
      mlang: Sign-compare warnings fix.
      mshtml: Sign-compare warnings fix.
      msi: Sign-compare warnings fix.
      msi: Sign-compare warnings fix.
      msvcrt: Sign-compare warnings fix.
      msxml3: Sign-compare warning fix.
      ntdll: Sign-compare warnings fix.

Andrey Esin (1):
      regedit: Corrections in Russian translation.

Andrey Turkin (7):
      riched20: Add spare area to ITextServicesImpl to work around broken apps.
      wordpad: Use inches instead of cm in calculations.
      wordpad: Do not leak a handle on error path.
      wordpad: Do not try to close uninitialized handles.
      mpr: Fix NULL pointer dereference in WNetGetResourceInformationW.
      include: Include winuser.rh from winresrc.h.
      wordpad: Do not pass resource ids to MessageBox.

Aric Stewart (14):
      shell32: Refine UNIXFS_path_to_pidl to return more detailed failures.
      user32: In DrawTextW/A make sure to properly initialize the cbSize of DRAWTEXTPARAMS.
      user32: DrawText handling of 0 counts with string, empty strings and -1 counts with empty string and NULL strings.
      user32: Make sure our vertical line count is at least 1 even if there is an oversized font in the edit control.
      user32: Update DrawText tests to cover behavior differences on win98.
      kernel32/tests: Add a test for CreateProcess with an AppName set.
      kernel32/tests: Add test for GetCommandLineW.
      gdiplus: Avoid dereferencing a potential NULL (Coverity 589).
      shell32/tests: Add tests for CommandLineToArgvW.
      ntdll: Implement SystemProcessorPerformanceInformation for Linux (/proc filesystems) and Mac OS X.
      comdlg32/tests: Add a test for GetOpenFileName with a dialog template.
      comdlg32: Some applications expect the filter combo to be filled before the CustomDlg is created.
      ntdll: Update behavior of ActivationContextBasicInformation.
      ntdll/tests:  handle info behavior for vista and 2008 properly.

Austin English (5):
      advapi32: Quiet a noisy fixme.
      wininet: Quiet a noisy fixme.
      include/wingdi.h: Define R2_LAST.
      gdi32: Quiet a noisy fixme.
      wineinstall: Remove bashisms, make sh compatible.

Chris Wilson (1):
      winex11: Ignore source clipping in BitBlt.

Christian Costa (3):
      d3dxof: Move template dumping code in a separate function.
      d3dxof: Reference the right objects.
      d3dxof: Add support for string parsing.

Detlef Riekenberg (13):
      crypt32/tests: Fix a test on win9x.
      crypt32/tests: Fix some tests on win9x.
      d3d8/tests: Fix test on win9x with broken driver.
      d3d9/tests: Fix test on win9x.
      d3d9/tests: Fix test for old gfx-card.
      gdi32/tests: Fix tests to not depend on 96 dpi.
      shlwapi: Implement SHSendMessageBroadcastA/W.
      comctl32/tests: Fix tests to not depend on 96 dpi, make it pass in Wine.
      shlwapi: Fix pointer and size in AssocQueryStringA.
      shlwapi/tests: Replace RegDeleteTreeW to run the tests again.
      mscms: Quiet a noisy fixme.
      shdocvw: Implement URLSubRegQueryA.
      shdocvw/tests: Add tests for URLSubRegQueryA.

Dmitry Timoshkov (6):
      kernel32: Add support for foreign process handles in GetProcessVersion.
      user32: Add a test for fullscreen window sizing, make it pass under Wine.
      user32: Fix a typo.
      winmm: MMIO_ALLOCBUF is ignored if mmioOpen gets a valid buffer.
      gdi32: Make EnumEnhMetaFile update the DC state before calling the callback.
      gdi32: Add EMR_GDICOMMENT to the list of records producing output.

Dylan Smith (24):
      richedit: Added EM_SETMARGINS to the list of unsupported messages.
      richedit: Added DestroyWindow call to clean up the end of a test.
      richedit: Moved optional message loop in tests to its own function.
      richedit: Added test for word wrapping behaviour.
      richedit: Account for selection bar in calculating available width.
      richedit: Fixed centering and right align with word wrap disabled.
      wordpad: Added option to disable word wrap.
      runtest: Fixed regression that prevented using just the -h option.
      richedit: Added test for auto scroll behaviour with redraw disabled.
      richedit: Tests for notifications while redraw is disabled.
      richedit: Test to see if wrapping happens with redraw disabled.
      richedit: Test changes in scrollbar's visibility with redraw disabled.
      richedit: Scroll cursor into view even with redraw turned off.
      richedit: Test for EN_UPDATE notification when window isn't visible.
      richedit: Test to see if WM_SETREDRAW removes the windows visibility.
      richedit: Prevent EN_UPDATE notifications when window isn't visible.
      richedit: Use the DefWindowProc to implement WM_SETREDRAW.
      richedit: Added tests for ctrl-key shortcut handling in WM_KEYDOWN.
      richedit: Handle ctrl-key shortcuts on WM_KEYDOWN.
      richedit: Added tests for EM_POSFROMCHAR for pos around end of text.
      richedit: Fixed EM_POSFROMCHAR for pos of text length.
      richedit: Fixed pointer syntax in helper functions for tests.
      richedit: Added test for correct behaviour for calling EditWordBreakProc.
      richedit: Fixed the call to the EditWordBreakProc.

Eric Pouech (5):
      msvcrt: Implemented wcscat_s.
      dbghelp: Report in module's info when a module's debug information has been mismatched (dbg and pdb only).
      winedbg: Use Unicode strings for all module references.
      winedbg: Added a command to allow loading mismatched modules.
      msvcrt: Implemented vswprintf_s.

Francois Gouget (5):
      dirent.h is a conditional include now.
      riched20/tests: Add a trailing '\n' to an ok() call.
      Assorted spelling fixes.
      comdlg32/tests: Remove unneeded casts.
      secur32: Check that the GnuTLS header is recent enough for schannel.

Frans Kool (1):
      wordpad: Corrected Dutch translations.

Hans Leidekker (8):
      wininet: Don't destroy authentication data when closing the connection.
      wininet: Add a test for basic authentication.
      wininet: Fix buffer size query for InternetQueryOption(INTERNET_OPTION_PROXY).
      cryptui: Add a partial implementation of CryptUIWizImport.
      wldap32: Use a test query that is more likely to succeed within 20 seconds.
      cryptui: Honour hDestCertStore in CryptUIWizImport, be more verbose about its shortcomings.
      wldap32: Skip tests when the server can't be reached.
      wininet: Add an exception handler in HttpOpenRequestA to protect against invalid accept type pointers.

Henri Verbeet (45):
      shell32: Add the IShellView2 interface.
      shell32: Add IShellView32 stubs.
      shell32: Add VIDs.
      shell32: Implement IShellView2_CreateViewWindow2.
      shell32: Add a FIXME for unimplemented view modes.
      comdlg32: Add a basic test for IShellView2_CreateViewWindow2.
      wined3d: Don't crash in CreateAdditionalSwapChain() if the context array wasn't allocated yet.
      wined3d: Cleanup properly if creating the context array fails in CreateAdditionalSwapChain().
      wined3d: We only need to enable texturing for a target if we're going to draw with it (without a shader).
      wined3d: Simplify texture target handling in surface_blt_to_drawable().
      wined3d: Handle offscreen rendering a bit nicer in surface_blt_to_drawable().
      wined3d: The container is always non-NULL if GetContainer() succeeds.
      wined3d: Remove a redundant local variable in apply_draw_buffer().
      wined3d: Modifying GL_TEXTURE_MIN_FILTER modifies both the MINFILTER and MIPFILTER sampler states.
      d3d10: Create an importlib.
      dxguid: Add d3d10 GUIDs.
      dxgi: Add the IDXGIObject interface.
      dxgi: Add the IDXGIDeviceSubObject interface.
      dxgi: Add the IDXGISurface interface.
      dxgi: Add the IDXGIOutput interface.
      dxgi: Add the IDXGISwapChain interface.
      dxgi: Add the IDXGIAdapter interface.
      secur32: Don't make the pBuffer parameter to schan_QueryCredentialsAttributes() const.
      secur32: Don't leak the credentials handle when pgnutls_certificate_allocate_credentials() fails.
      secur32: Improve error handling for gnutls_global_init().
      secur32: Implement schannel InitializeSecurityContextW.
      wined3d: Add support for EXT_framebuffer_multisample.
      wined3d: Set the sampler only once in shader_glsl_select_depth_blt().
      d3d10: Add a debug function for D3D10_DRIVER_TYPE.
      d3d10: Add a debug function for DXGI_FORMAT.
      d3d10: Add a debug function for D3D10_PRIMITIVE_TOPOLOGY.
      d3d10: Add a stub implementation of ID3D10Device.
      d3d10: Add an initial implementation of D3D10CreateDevice().
      dxgi: Add a dxgi dll.
      dxgi: Add the IDXGIFactory interface.
      dxgi: Implement CreateDXGIFactory().
      dxgi: Fix a typo.
      dxgi: Add the IDXGIDevice interface.
      dxgi: Add a stub IDXGIDevice implementation.
      d3d10: d3d10 doesn't need wined3d.
      d3d10: Implement D3D10CreateDeviceAndSwapChain().
      d3d10: It doesn't make sense to prefer native d3d10.
      dxgi: Add a debug function for DXGI_FORMAT.
      ddraw: Make sure pWineDirect3DCreate and pWineDirect3DCreateClipper match the header.
      wined3d: Remove the SDKVersion parameter to WineDirect3DCreate().

Huw Davies (13):
      widl: Include errno.h.
      wrc: Include errno.h.
      ole32: Partial implementation of IOleObject_Update().
      ole32: Call the object's own IOleObject_GetUserType() if the object is running.
      ole32: Call the object's IOleObject_IsUpToData() if the object is running.
      ole32: Call the object's IPersistStorage_Load() if the object is running.
      ole32: Call the object's IPersistStorage_InitNew() if the object is running.
      ole32: Call the object's IPersistStorage_Save() if the object is running.
      ole32: Call the object's IPersistStorage_SaveCompleted() if the object is running.
      ole32: Call the object's IPersistStorage_HandsOffStorage() if the object is running.
      ole32: Query the object's dirty state if it's running.
      winspool.drv: The fourth parameter of DeviceCapabilitiesW should be an output ptr.
      ole32: Call the appropriate storage function when we run the object.

Hwang YunSong(황윤성) (2):
      appwiz.cpl: New Korean resource.
      wordpad: Updated Korean resource.

Ivan Sinitsin (1):
      winex11: Set copy mode when rendering OpenGL picture.

Jacek Caban (55):
      mshtml: Added IHTMLElement::put_onmouseover implementation.
      mshtml: Added IHTMLDocument2::put_onmouseover implementation.
      mshtml: Added get_onmouseover implementations.
      mshtml: Added event bubbling implementation.
      mshtml: Added IHTMLWindow2::get_event implementation.
      mshtml: Pass the right 'this' argument to event handlers.
      mshtml: Added set_event_handler(VT_NULL) implementation.
      mshtml: Added IHTMLEventObj::get_srcElement implementation.
      mshtml: Don't crash in UIActivate if hostui is NULL.
      mshtml: Don't crash in notif_focus if client is NULL.
      mshtml: Move GetContentDOMWindow call from HTMLWindow_Create.
      mshtml: Added IHTMLFrameBase2::get_contentWidnow implementation.
      mshtml: Added open and close implementation.
      mshtml: Added IHTMLInputElement::select implementation.
      mshtml: Added element blur, focus, paste and drag event implementation.
      mshtml: Added element keydown, mouseup and mousedown event implementation.
      mshtml: Added document keydown, keyup, dragstart and selectstart event implementation.
      mshtml: Added element mouseout and selectstart event implementation.
      mshtml: Test for NULL nscontainer in set_event_handler_disp.
      mshtml: Added IHTMLDocument4::focus implementation.
      mshtml: Added IHTMLElement::get_innerText implementation.
      mshtml: Fixed increasing buffer size logic in text range implementation.
      mshtml: Added IHTMLElement::put_innerText implementation.
      mshtml: Added IHTMImgElement::get_src implementation.
      mshtml: Added IHTMLDOMNode::insertBefore implementation.
      mshtml: Don't fail in IHTMLDOMNode::appendChild if AppendChild failed.
      mshtml: Added IHTMLStyle::put_top(VT_NULL) implementation.
      mshtml: Use set_nsstyle_attr_var in IHTMLStyle::put_left implementation.
      mshtml: Added IOmNavigator::get_appVersion implementation.
      jscript: Added Date constructor implementation.
      jscript: Added Date.getTime() implementation.
      libport: Added isnan.
      jscript: Added isNaN implementation.
      kernel32: Return uppercase drive letter in GetLogicalDriveStrings.
      kernel32: Added GetLogicalDriveStrings tests.
      mshtml: Added support for conditional comments.
      jscript: Added NaN value implementation.
      jscript: Added undefined to number conversion implementation.
      jscript: Added isFinite implementation.
      msxml3: Update orphaned list in put_documentElement.
      msxml3: Fixed dynamic properties allocation.
      msxml3: Silence invalid FIXME.
      jscript: Added Infinity value implementation.
      jscript: Added NaN handling to relational operators.
      jscript: Added infinity and nan handling to str_to_number.
      jscript: Added NaN handling to Math.min and Math.max.
      jscript: Added Math.abs with no arg implementation.
      jscript: Added NaN comparation tests.
      mshtml: Added IHTMLInputElement::[get|put]_defaultChecked implementation.
      mshtml: Added IHTMLInputElement::put_checked implementation.
      jscript: Added Number.valueOf implementation.
      jscript: Treat function expressions with identifier as function declarations.
      jscript: Added Math.floor implementation.
      jscript: Return NaN in Math.ceil if called without any argument.
      urlmon: Added IsLoggingEnabled[AW] stub implementation.

James Hawkins (28):
      msi: Add more tests for the CompLocator part of the AppSearch action.
      msi: Add tests for the IniLocator part of the AppSearch action.
      msi: Add tests for the RegLocator part of the AppSearch action.
      msi: Add tests for the DrLocator part of the AppSearch action.
      msi: Append the file signature to the component's directory when searching for the component's key path.
      msi: Expand REG_EXPAND_SZ registry values in the RegLocator table.
      msi: Fix the returned format of REG_BINARY data.
      msi: Append a backslash to the AppSearch directory path.
      msi: Append a backslash to the AppSearch registry path.
      msi: All files are uncompressed in an administrative image.
      msi: Pass the correct view to get_row.
      msi: Return the requested ini field.
      msi: Add more tests for the AppSearch action.
      msi: Check the file version when a version is provided in the signature.
      msi: Add more tests for the RegLocator part of the AppSearch action.
      msi: Handle searching for a file with no signature.
      msi: Handle searching for directories in the IniLocator part of the AppSearch action.
      msi: Simplify and clean up ACTION_RecurseSearchDirectory.
      msi: Don't get rid of the file signature when searching the DrLocator table.
      msi: Only append a backslash to directories.
      msi: Append the next directory to search to the current directory when recursing.
      msi: Only check the file signature if the candidate file is not a directory.
      msi: Strip the file off the parent path if it's not a directory.
      msi: Fix a copy and paste error.
      msi: Use the quoted part of the registry value when searching for a file or directory.
      msi: Only compare the file version if a version was specified.
      msi: Fix a failing test in win9x.
      msi: Fix several test failures.

Jeff Zaroyko (3):
      winmm: Fix a failing mixer test on 98 and ME.
      dsound/tests: Fix failing propset and capture tests on win98.
      dsound/tests: Fix a failing capture test on win2k.

Jeremiah Flerchinger (3):
      winedos: Added missing values to VGA Mode 19 (256 color) palette registers.
      winedos: Added additional VGA/VESA modes & information missing in mode descriptions.
      winedos: Added/stubbed/documented missing VGA registers.

Jeremy White (2):
      gdi32: Expand maximum font count to 4096, warn when we go over that limit.
      gdi32/tests: Make the comparison of the enumerated and returned logfont structures actually work.

Joris Huizer (1):
      shlwapi: Fix ASSOC_GetExecutable not to use uninitialised variable.

Juan Lang (39):
      crypt32: Fix more test failures on Win9x.
      rpcrt4: Add tests for UuidCreate.
      crypt32: Fix remaining Win9x encoding test failures.
      crypt32: Fix tests on WinME.
      crypt32: Fix a test failure on Win98.
      crypt32: Fix a few more test failures.
      crypt32: Correct last error when no data are passed to CRYPT_AsnDecodeInt.
      crypt32: Don't check for no data to decode in CryptDecodeObject{Ex}, doing so masks some errors.
      crypt32: Make some variables const.
      crypt32: Include policy being checked in failure message.
      crypt32: Use helper function and broken() macro to make expected chain status results a little more clear.
      crypt32: Actually compare chain status instead of doing a no-op comparison, and mark as todo the statuses that don't match in Wine.
      cryptnet: Fix test failures on Windows Vista/2008.
      crypt32: Microsoft fixed a bug with name constraints, so make Wine's behavior match.
      crypt32: Correct another chain status discrepancy with Windows.
      crypt32: Fix expected/got mixup.
      wintrust: Add stub for WVTAsn1CatMemberInfoEncode.
      wintrust: Add tests for WVTAsn1CatMemberInfoEncode.
      wintrust: Implement WVTAsn1CatMemberInfoEncode.
      wintrust: Add stub for WVTAsn1CatMemberInfoDecode.
      wintrust: Add tests for WVTAsn1CatMemberInfoDecode.
      wintrust: Implement WVTAsn1CatMemberInfoDecode.
      wintrust: Add stub for WVTAsn1CatNameValueEncode.
      wintrust: Add tests for WVTAsn1CatNameValueEncode.
      wintrust: Implement WVTAsn1CatNameValueEncode.
      wintrust: Add stub for WVTAsn1CatNameValueDecode.
      wintrust: Add tests for WVTAsn1CatNameValueDecode.
      wintrust: Implement WVTAsn1CatNameValueDecode.
      crypt32: Don't crash if adding to a provider store fails.
      crypt32: Pass flags to enumeration callback.
      crypt32: Add stub for CertEnumPhysicalStore.
      include: Fix typos.
      crypt32: Correct trust error status for cyclic chains.
      crypt32: Fix a failing test on Windows, and remove TODO_ERROR since Wine's implemenation already matches.
      wintrust: Separate loading a message from a WINTRUST_CERT_INFO into a helper function.
      wintrust: Separate loading a message from a WINTRUST_FILE_INFO into a helper function.
      wintrust: Pass file handle and path to SOFTPUB_GetMessageFromFile.
      wintrust: Partially implement SoftpubLoadMessage for catalog files.
      crypt32: Change expected behavior of a test to match Windows Vista/2008.

Kai Blin (2):
      winmm: Use skip() instead of trace() when skipping tests.
      comdlg32: Avoid possible NULL pointer dereference (Coverity).

Kirill K. Smirnov (5):
      oleaut32: Print error messages as ERR.
      oleaut32: Return correct error code.
      oleaut32: Remove superfluous return statement.
      gdiplus: IPicture_SaveAsFile updates seek pointer, so put it back.
      gdiplus: Whole picture object should be cloned in GdipCloneImage(), not just parent class 'image'.

Lei Zhang (10):
      shlwapi: Add some tests for AssocQueryStringW.
      shlwapi: Fix AssocQueryStringW parameter checking.
      shlwapi: Handle ASSOCSTR_EXECUTABLE in IQueryAssociations_GetString.
      shlwapi: Close registry handles when destroying IQueryAssociations.
      version: Prevent infinite looping in VersionInfo32_FindChild.
      shlwapi: Refactor get executable code in IQueryAssociations_fnGetString.
      shlwapi: Refactor data return code in IQueryAssociations_fnGetString.
      shlwapi: Handle ASSOCSTR_FRIENDLYAPPNAME in IQueryAssociations_GetString.
      shlwapi: Properly handle pszExtra in IQueryAssociations_GetString.
      user32: Send messages for edit control context menu operations.

Maarten Lankhorst (4):
      includes: Fix CryptCATAdminAddCatalog definition.
      quartz: Fix ACMWrapper to allow mono channels too.
      quartz: Implement dynamic format changing in directsound renderer.
      setupapi: Implement installing catalog files.

Marcus Meissner (4):
      Fixed RegEnumKey(Ex)W buffer sizes.
      oleview: RegEnumKey gets always sizes, not -1.
      jscript: Check for This->ctx and This->site earlier (Coverity).
      mshtml: Initialize nswindow in create_doc_from_nsdoc.

Michael Karcher (14):
      msxml3: Implementation of IXMLDOMNamedNodeMap::removeNamedItem.
      msxml3: Correct handling of listLength == NULL in IXMLDOMNamedNodeMap::get_length.
      msxml3: IXMLDOMNode_put_nodeValue: Use variant coercion.
      msxml3: Use right COM invocation macro.
      msxml3: Remove superflous re-conversion from wide chars to utf8.
      msxml3: Fix leaks in callers of xmlChar_from_wchar.
      msxml3: Fix leaking the BindStatusCallback if bind_url fails.
      msxml3/tests: Fix assorted memory leaks.
      msxml3: Fix memory leaks in node.c.
      msxml3: Remove unneeded code.
      msxml3: Use the _private element of xmlDoc as pointer.
      msxml3: Add an orphan node list to xmlDoc.
      msxml3: Use orphan node list.
      msxml3: Initialize xmldoc->_private in IPersistStream::Load for IXMLDOMDocument.

Michael Stefaniuc (14):
      shlwapi: Remove break after return (Smatch).
      shdocvw/tests: Remove duplicated header include.
      wininet: Remove duplicated header includes.
      mlang/tests: Remove superfluous backslashes at end of lines.
      riched32: Remove superfluous backslashes at end of lines.
      dinput: Remove superfluous backslashes at end of lines.
      advapi32/tests: Remove superfluous casts of void pointers to other pointer types.
      riched20: Remove superfluous backslashes at end of lines.
      winecfg: Fix compilation on older gcc versions.
      gdi32: Don't cast the void pointer returned by GDI_GetObjPtr().
      comctl32: Remove the superfluous casting of the LPVOID returned by Alloc().
      comctl32: DPA_GetPtr() returns a LPVOID so don't cast its return value.
      comctl32: LockResource() returns a LPVOID so don't cast its return value.
      ntdll: Don't cast void pointers to other pointer types.

Mounir IDRASSI (1):
      winscard: Added SCardAccessStartedEvent implementation.

Muneyuki Noguchi (35):
      clock: Convert Japanese resource to UTF-8.
      cmd: Convert Japanese resource to UTF-8.
      cmdlgtst: Convert Japanese resource to UTF-8.
      notepad: Convert Japanese resource to UTF-8.
      oleview: Convert Japanese resource to UTF-8.
      reg: Convert Japanese resource to UTF-8.
      regedit: Convert Japanese resource to UTF-8.
      taskmgr: Convert Japanese resource to UTF-8.
      view: Convert Japanese resource to UTF-8.
      wineboot: Convert Japanese resource to UTF-8.
      winecfg: Convert Japanese resource to UTF-8.
      winefile: Convert Japanese resource to UTF-8.
      winemine: Convert Japanese resource to UTF-8.
      winhlp32: Convert Japanese resource to UTF-8.
      wordpad: Convert Japanese resource to UTF-8.
      write: Convert Japanese resource to UTF-8.
      appwiz.cpl: Convert Japanese resource to UTF-8.
      avifil32: Convert Japanese resource to UTF-8.
      comctl32: Convert Japanese resource to UTF-8.
      comdlg32: Convert Japanese resource to UTF-8.
      mpr: Convert Japanese resource to UTF-8.
      msacm32: Convert Japanese resource to UTF-8.
      mshtml: Convert Japanese resource to UTF-8.
      msrle32: Convert Japanese resource to UTF-8.
      oledlg: Convert Japanese resource to UTF-8.
      serialui: Convert Japanese resource to UTF-8.
      setupapi: Convert Japanese resource to UTF-8.
      shell32: Convert Japanese resource to UTF-8.
      user32: Convert Japanese resource to UTF-8.
      wineps.drv: Convert Japanese resource to UTF-8.
      wininet: Convert Japanese resource to UTF-8.
      winmm: Convert Japanese resource to UTF-8.
      shlwapi: Convert Japanese resource to UTF-8.
      documentation: Add Japanese translation.
      winex11: Prevent XCreateIC from returning NULL when input style isn't "root".

Nicolas Le Cam (3):
      netapi32/tests: Add a test for well known account RIDs.
      netapi32: Fix well known account RIDs in NetQueryDisplayInformation Level 1.
      netapi32/tests: Fix a failing test on localized Windows.

Nikolay Sivov (5):
      oleacc: Implemented GetRoleText[A/W] with tests.
      gdiplus: Add some tests for pathiterator, fix leaks.
      gdiplus: Some tests for GdipCreateRegionHrgn added.
      gdiplus: Added Gdip[Get/Set]TextureWrapMode.
      gdiplus: Added GdipSetClipGraphics.

Paul Bryan Roberts (11):
      advapi32: ConvertStringSecurityDescriptorToSecurityDescriptor - more tests (pass).
      ntdll: RtlSetControlSecurityDescriptor() implementation and test.
      advapi32: LookupAccountNameW() - add got clause to test.
      advapi32: LookupAccountNameW() - passes expected SidTypeUser test.
      advapi32: LookupAccountNameW() - return correct domain name length for not-so-well-known SIDs.
      advapi32: LookupAccountNameW() - use ACCOUNT_SIDS domain and name_use fields for well known SIDS.
      advapi32: LookupAccountNameW() - correct call in SetEntriesInAclW().
      advapi32: LookupAccountNameW() - use CreateWellKnownSid() properly.
      advapi32: LookupAccountNameW() - NULL account name handled.
      advapi32: LookupAccountSidW() - handle first user account.
      advapi32: LookupAccountNameW() - only first user account and well known SIDs accepted.

Paul Vriens (20):
      advpack/tests: Use win_skip instead of trace.
      kernel32/tests: Free memory after use.
      mscms/tests: Fix a typo.
      setupapi/tests: Fix a failure on win98.
      psapi/tests: Use win_skip instead of trace.
      uxtheme/tests: Use skip instead of trace.
      comctl32/tests: Use win_skip instead of trace.
      comctl32/tests: Use win_skip instead of trace.
      version/tests: Fix a copy-paste mistake.
      version/tests: Use win_skip instead of trace.
      usp10/tests: Use win_skip instead of trace.
      shell32/tests: Use win_skip instead of trace.
      shell32/tests: Use win_skip instead of trace.
      userenv/tests: Rewrite the test to cope with multiple blocks of tests.
      userenv/tests: Skip a few tests on NT4.
      kernel32/tests: Fix a few failures on win9x and winme.
      kernel32/tests: Skip a test if needed.
      oleacc/tests: Fix some failures on Win98 up to W2K.
      shlwapi/tests: Fix failures on multiple platforms.
      riched20/tests: Skip some tests on Win9x and WinMe.

Rafał Mużyło (1):
      configure: Avoid problem with recent autoconf.

Reece Dunn (5):
      shell32: Print the correct GUIDs in the shellpath tests.
      msvcmaker: The Visual Studio project conversion tool requires a configuration type.
      include: Fixed the tom constant values.
      include: data_size on GetPrivateData should be a pointer type since it is an in/out parameter.
      include/mlang: Added a missing out attribute.

Ricardo Filipe (12):
      reg.exe: Added Portuguese translation.
      oleview: Added Portuguese translation.
      xcopy: Added Portuguese translation.
      wordpad: Added Portuguese translation.
      write: Added Portuguese translation.
      taskmgr: Added Portuguese translation.
      net: Added Portuguese translation.
      wineboot: Added Portuguese translation.
      msvfw32: Added Portuguese translation.
      iccvid: Added Portuguese translation.
      sane.ds: Added Portuguese translation.
      mshtml: Added Portuguese translation.

Rob Shearman (16):
      jscript: Fix shift/reduce conflict caused by ArrayLiteral.
      rpcrt4: The type referred to by the wire_marshal attribute in server.idl must be a pointer.
      wnaspi32: Protect the inclusion of dirent.h in aspi.c.
      shell32: Fix the position where WINAPI is specified in the LPFNOFN typedef.
      rsaenh: Make some functions used in only one file static.
      write: Close the thread and process handles returned by CreateProcessW.
      rsaenh: Add a value to the empty braces in the initialiser for aOIDDescriptor in build_hash_signature.
      jscript: Fix shift/reduce conflict in IfStatement rule.
      kernel32: Convert NLS resource files using hex-encoded UTF-16 strings into UTF-8.
      msvcmaker: Generate rules for IDL_C_SRCS, IDL_S_SRCS, IDL_P_SRCS and IDL_TLB_SRCS.
      kernel32: Fix some Esperanto day and month names.
      widl: Check for overflow when parsing integer constants.
      wrc: Check for overflows when parsing integer constants.
      wrc: Don't accept "0" as a valid codepage in "#pragma code_page" directives.
      include: Fix the level of indirection for the umd_version parameter of the CheckInterfaceSupport method of IDXGIAdapter.
      wpp: Check for overflows when parsing integer constants.

Roderick Colenbrander (12):
      opengl32/tests: Don't call wglGetProcAddress at the start of the test.
      wined3d: arbfp_set_shader_blit should handle ENTER_GL/LEAVE_GL instead of the caller.
      wined3d: arbfp_blit_unset should call ENTER_GL/LEAVE_GL instead of the caller.
      wined3d: Add ENTER_GL/LEAVE_GL to gen_yuv_shader.
      wined3d: Prevent a recursive ENTER_GL before calling blitter->free_private.
      wined3d: Fix a recursive ENTER_GL in read_from_framebuffer.
      wined3d: Fix recursive ENTER_GL in LoadLocation.
      wined3d: ActivateContext caused a lot of recursive ENTER_GL calls while it is especially dangerous in here as this function can indirectly trigger GDI calls.
      wined3d: Fix recursive ENTER_GL in UpdateSurface.
      wined3d: Protect gl calls in Volume_LoadTexture with ENTER_GL/LEAVE_GL.
      wined3d: Remove ENTER_GL/LEAVE_GL from VolumeTexture_PreLoad because it doesn't make any GL calls.
      opengl32: Add some updates for recent opengl extensions.

Stefan Leichter (2):
      rpcrt4: Add stub for MesEncodeDynBufferHandleCreate.
      include: Fix prototype of SCardReleaseStartedEvent.

Sylvain Petreolle (1):
      ole32: Stub implementation for CoGetCallerTID.

Tobias Jakobi (3):
      winex11: Remove acute/apostrophe from German keyboard layout tables.
      wined3d: Fix some typos.
      wined3d: Add GL_TEXTURE_BINDING_3D to wined3d_gl header.

Vijay Kiran Kamuju (1):
      include: Add commctrl.rh.

Vitaliy Margolen (1):
      wined3d: Add one more FBO error status code.

--
Alexandre Julliard
julliard@winehq.org
