The Wine development release 1.1.16 is now available.

What's new in this release (see below for details):
  - Improved SANE scanner support.
  - Support for digital CD audio playback.
  - Improved cookies management in Wininet.
  - Support for building stand-alone 16-bit modules.
  - 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.16.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.1.16.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.16:

   3107  listview columns do not sort in Acemoney
   7385  Microsoft Golf 3.0 crashes on startup
  10213  Pegasus Mail: program closes when sub-program closes
  10631  3DMark01 - Test4 Nature is extremely slow
  11164  midtown madness 2 menus are not displayed correctly
  11861  regedit does not correctly display unicode value data
  11864  iTunes - Show in Windows Explorer link broken
  12119  Dialog with enu does not display the menu
  12345  Live For Speed S2: could not detect suitable screen modes
  12701  watchtower library - listview works slow and wrong
  13389  Victoria, an  Empire under the sun. Crashes on startup
  13676  Lemmings Revolution: does not start anymore, still did in 0.9.43.
  14308  Dungeon Keeper 2 cursor fails to render correctly with hardware rendering enabled
  14310  Dungeon Keeper 2 cannot be navigated with the arrow keys
  14433  GuildWars 3D rendering broken
  14469  America does not run
  14780  FoxPro for Windows 2.5 setup.exe crashes with page fault
  14964  Missing symbols in Microsoft Word (symbol.ttf is required)
  14982  Supreme Commander: Lighting changes on zoom level
  15063  Silent hill 4 demo crashes very early
  15528  Miranda has severe problems showing history in conversation windows
  15545  Photomatix Pro works in 32-bit but crashes in 64-bit Ubuntu
  15559  winealsa sound regression: scratchiness/stutter in multiple games
  15641  Tile Studio 2.55: Toolbar icons get resized when switching to Map mode
  15907  Dragon NaturallySpeaking 10 crashes after SelectStyleFont
  16199  Miranda IM options page crash
  16556  Dragon NaturallySpeaking 10 New User Box displays training text incorrectly
  16818  Switched Y/Z on german keybord settings
  16908  memory leak in function SetWindowRgn (?)
  16917  file dialog to select attchments slows down for many files
  16990  Call of Duty 2 demo install fails
  17050  eMule: Ends up eating all the memory (swap included)
  17117  Chicken Tournament: needs ComputeSphereVisibility
  17288  Keyboard stops working in Halo Demo
  17369  VMware Intrastructure Client 2.5 cannot validate disk capacity while creating new VM
  17373  eac3to: large files don't work - NtMapViewOfSection?
  17409  crypt32/chain tests fail with +heap enabled
  17411  crypt32/encode tests fail with +heap enabled
  17413  riched32/editor tests fail with +heap enabled
  17414  user32/dde test crashes if +heap enabled
  17415  several tests (jscript:run, msi:msi, netapi32:access) crash if +heap enabled
  17417  winetest causes msvcrt:file test to fail
  17429  winhlp32 crash when run with no options
  17490  win16 app fails with unimplemented function krnl386.exe.GetShortPathName
  17500  libs/wine: Japanese character wrongly reported as invalid
  17502  Portal: Prelude 1.1.5 installer has improper placement of directory selection text
  17507  Scrollbars are inappropriately displayed in Ascentive Library Files installer

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

Changes since 1.1.15:

Adam Stoelting (2):
      msadp32.acm: Changed pointer cast from DWORD to DWORD_PTR.
      winemp3.acm: Changed pointer cast from DWORD to DWORD_PTR.

Alexandre Julliard (76):
      ntdll: Avoid null dereference in the NtCreateSymbolicLinkObject trace.
      ntdll: Improve debugging helper for object attributes structure.
      ntdll: Don't fail in NtMapViewOfSection for 4Gb+ files if an explicit size is specified.
      user32/tests: Another fix for lack of color cursor support.
      user32/tests: Add a couple of optional message, mark as todo a test that now fails consistently on Wine.
      user32/tests: Skip some tests if SetForegroundWindow doesn't behave correctly.
      user32/tests: Fix some checks of the key value in accelerators.
      secur32: Properly initialize the helper structure when fork support is missing.
      kernel32/tests: Fix the last remaining failure on NT4.
      kernel32/tests: Add a few more error codes for GetDiskFreeSpace.
      winmm/tests: Assume volume is not supported if waveGetOutVolume fails.
      configure: Try to avoid warnings in checks to support configuring with -Werror.
      configure: Don't set target flags if build and host are the same.
      wrc: Print better error messages for functions that set errno.
      user32: Make sure to not corrupt last error in the message spy.
      makefiles: Do not install progman, uninstaller and winebrowser in the bin directory.
      ntdll/tests: Don't pass uninitialized object attributes to symlink functions.
      shell32: Default to the more modern location for the user profile directory.
      user32/tests: Test for failure to change system parameters even if getting them succeeded.
      user32/tests: Skip message tests if queuing keyboard events doesn't work.
      ole32/tests: Don't hang forever in the child process.
      ntdll: Determine the Unix tid for the server directly in ntdll.
      ntdll: Move the CPU-specific handling of current TEB to the respective signal files.
      msvcrt: Don't try to duplicate invalid handles. Don't reset std handles if we didn't set them.
      user32/tests: Ignore SPI_ICONVERTICALSPACING notifications. Don't reset mouse buttons if setting failed.
      msctf/tests: Don't import uuid.
      winetest: Try to trigger the Gecko install for mshtml tests, and skip them otherwise.
      include: Avoid redefinition of WIN32 in twain.h.
      user32/tests: Try harder to make the window receive keystrokes.
      tests: When tracing is enabled, output the todo tests too.
      winetest: Get rid of the archive URL, it's no longer used.
      ntdll: Call pthread_sigmask directly instead of through the pthread function table.
      ntdll: Moved exit_thread and abort_thread functions to thread.c.
      ntdll: Call pthread_create and pthread_exit directly from ntdll.
      fonts: Re-generate fonts using the "official" fontforge version.
      fonts: Set the symbol flag when generating symbol.ttf.
      user32/tests: Skip some input tests if we fail to queue keyboard events.
      user32/tests: Skip some message tests if we fail to queue events.
      user32/tests: Remove an unreliable pixel test.
      user32/tests: Add some optional keystrokes for AltGr key.
      user32/tests: Print all the unexpected messages we received. Fix a couple of sequences.
      winetest: Process messages while waiting for a process to terminate.
      winetest: Don't try to unload mshtml, it's broken.
      ntdll: Don't free the thread stack and TEB while exiting, do it from the next thread.
      ntdll: Allocate the stack for all threads, don't rely on pthread to do it for us.
      libwine: Get the reverse mapping of the Unicode default char to check for invalid chars.
      programs: Only create executable wrappers for programs that get installed in the bin directory.
      winegcc: Allow creating an executable with an arbitrary extension.
      configure: Disable VxD and DOS modules when 16-bit support is disabled.
      kernel32: Print a nicer error message when 16-bit/DOS apps cannot be launched.
      user32/tests: Skip more input tests if we can't queue keyboard input.
      user32/tests: Add a couple of optional messages.
      winhlp32: Fix a crash when started without arguments.
      credui: Fix old-style dependency line in the makefile.
      user32: Move a few 16-bit user functions to user16.c where they belong.
      libwine: Try to load all modules in the programs directory, not just those with .exe extension.
      user32/tests: Fix a few more input test failures on Windows.
      user32/tests: Add some more optional messages.
      msi: Fix handling of buffer sizes in MsiEnumPatchesA and avoid a redundant call to MsiEnumPatchesW.
      msi/tests: Add some tests for MsiEnumPatchesW, fix a few failures on XP.
      ntdll: Default to WinXP version if there's nothing in the registry.
      programs: Get rid of the remaining binary wrappers, they break out-of-tree builds.
      user32/tests: Fix some input tests on Win9x and NT4.
      makefiles: Avoid nested variable expansion that doesn't work on BSD make.
      winebuild: Make the 16-bit DOS header a local symbol.
      winebuild: Allow the module entry point to be NULL.
      winebuild: Add support for generating stand-alone 16-bit modules.
      winecrt0: Add entry point code for stand-alone 16-bit executables.
      kernel32: Add support for loading stand-alone 16-bit modules.
      kernel32: Make sure the process has an entry point before starting it.
      kernel32: Make winoldap.mod into a stand-alone 16-bit executable.
      kernel32: Make winhelp.exe into a stand-alone 16-bit executable.
      configure: Disable 16-bit code by default for Mingw builds.
      user32/tests: Fix some message sequences for Win9x.
      winecfg: Offer a few more dlls in the load order drop-down list.
      winebuild: Don't prefix local symbols with an underscore.

Alistair Leslie-Hughes (34):
      urlmon: Correctly test to see if PutProperty_CLASSIDPROP is called.
      urlmon: Fix PutProperty_CLASSIDPROP check under win98 to w2k.
      mshtml: Add VT_I4 support to set_nsstyle_attr_var.
      mshtml: Implement IHTMLStyle get/put minHeight.
      mshtml: Implement IHTMLStyle_get_marginRight.
      mshtml: Implement IHTMLStyle_get_marginLeft.
      mshtml: Implement IHTMLCurrentStyle_get_position.
      mshtml: Implement IHTMLCurrentStyle_get_fontFamily.
      mshtml: Implement IHTMLCurrentStyle_get_fontStyle.
      mshtml: Implement IHTMLCurrentStyle_get_backgroundImage.
      mshtml: Implement IHTMLCurrentStyle_get_fontVariant.
      mshtml: Implement IHTMLCurrentStyle_get_borderTopStyle.
      mshtml: Implement IHTMLCurrentStyle_get_borderRightStyle.
      mshtml: Implement IHTMLCurrentStyle_get_borderBottomStyle.
      mshtml: Implement IHTMLCurrentStyle_get_borderLeftStyle.
      mshtml: Implement IHTMLCurrentStyle_get_textAlign.
      mshtml: Implement IHTMLCurrentStyle_get_textDecoration.
      mshtml: Implement IHTMLCurrentStyle_get_cursor.
      mshtml: Implement IHTMLCurrentStyle_get_fontWeight.
      mshtml: Implement IHTMLCurrentStyle_get_fontSize.
      mshtml: Implement IHTMLCurrentStyle_get_left.
      mshtml: Implement IHTMLCurrentStyle_get_top.
      mshtml: Implement IHTMLCurrentStyle_get_width.
      mshtml: Implement IHTMLCurrentStyle_get_height.
      mshtml: Implement IHTMLCurrentStyle_get_paddingLeft.
      mshtml: Implement IHTMLCurrentStyle_get_zIndex.
      mshtml: Implement IHTMLCurrentStyle_get_verticalAlign.
      mshtml: Implement IHTMLCurrentStyle_get_marginRight.
      mshtml: Implement IHTMLCurrentStyle_get_marginLeft.
      mshtml: Implement IHTMLStyle get/put backgroundRepeat.
      mshtml: Implement IHTMLCurrentStyle_get_backgroundRepeat.
      mshtml: Add idl for IPersistHistory interface.
      uuid: Add IID_PersistHistory GUID.
      mshtml: Show IPersistHistory interface is supported.

Anders Jonsson (4):
      browseui: Add Swedish translation.
      taskmgr: Add Swedish translation.
      oleview: Add Swedish translation.
      winemine: Change max number of mines to (cols-1)*(rows-1).

Andrew Nguyen (5):
      include: Fix mismatched extern declaration in aclui.h.
      tapi32: Stub lineGetProviderListW.
      tapi32: Stub lineAddProviderW.
      hid: Stub HidD_GetFeature.
      hid: Stub HidD_SetFeature.

Andrew Talbot (2):
      rsaenh: Replace malloc/realloc with HeapAlloc/HeapReAlloc.
      twain_32: Replace realloc() and strdup().

Aric Stewart (21):
      gdiplus: In GdipDrawString do not NULL terminate the buffer. It is unneeded and overruns the buffer.
      wininet: use debugstr_a in NETCON_getNextLine TRACE to avoid overflow on long lines.
      msctf: Add Enable key and User key for language profile.
      msctf: Implement ITfInputProcessorProfiles::EnableLanguageProfile.
      msctf: Implement ITfInputProcessorProfiles::EnableLanguageProfileByDefault.
      msctf: Implement ITfInputProcessorProfiles::IsEnabledLanguageProfile.
      wininet: Parse cookie information from cookie value.
      wininet: When cracking a cookie url discard the webpage and ensure at least a path of '/'.
      wininet: Add and match paths for cookies.
      wininet: Complicated cookie value set/get tests.
      wininet: Make use of improved cookie functions and cookie paths.
      msctf: Added msctf tests.
      wininet: Handle cookie expiration.
      msctf: Implement ITfInputProcessorProfiles::Unregister.
      msctf: Define TIP Category values.
      msctf: Add tests for ITfCategoryMgr::UnregisterCategory and ITfCategoryMgr::RegisterCategory.
      msctf: Define TF_LANGUAGEPROFILE.
      msctf: Implement ITfInputProcessorProfiles::EnumInputProcessorInfo.
      msctf: Implement ITfInputProcessorProfiles::EnumLanguageProfiles.
      msctf: Implement ITfCategoryMgr::FindClosestCategory.
      msctf: Use ITfCategoryMgr::FindClosestCategory to set catid when enuming language profiles.

Artem Reznikov (1):
      shlwapi: Ukranian translation.

Aurimas Fischer (13):
      comdlg32: Add Lithuanian translation.
      wineps.drv: Add Lithuanian translation.
      winecfg: Add Lithuanian translation.
      shell32: Add Lithuanian translation.
      comdlg32: Unify/fix some Lithuanian translated strings.
      winecfg: Unify/fix some Lithuanian translated strings.
      winspool.drv: Add Lithuanian translation.
      winspool.drv: Properly free destinations list returned by CUPS.
      comdlg32: Fix another inconsistency in Lithuanian translation.
      winspool.drv: Fix another inconsistency in Lithuanian translation.
      notepad: Fix more inconsistencies in Lithuanian translation.
      user32: Add Lithuanian translation.
      mshtml: Add Lithuanian translation.

Austin English (3):
      kernel32: Add test for renaming file over itself.
      user32: Add a missing HeapFree.
      dbghelp: Change pointer cast to DWORD_PTR.

Chris Robinson (2):
      mcicda: Play back an audio CD digitally, when possible.
      mcicda: Partially handle Play notifications.

Christian Costa (1):
      mciqtz32: Add stubbed mciqtz32.dll (part of DirectShow).

David Adam (7):
      d3drm: Remove unneeded includes.
      d3drm: Implement the spherical interpolation part of D3DRMQuaternionSlerp.
      d3drm: Allow output pointer to be equal to input pointer.
      d3drm: Simplify some functions.
      d3dx8: Implement the spherical interpolation part for D3DXQuaternionSlerp.
      d3drm: D3DRMQuaternionSlerp should be tested against returned Windows values.
      ddraw: Implement ComputeSphereVisibility.

David Korth (1):
      winex11.drv: Map Super_L, Super_R, and Menu keys correctly.

Detlef Riekenberg (8):
      spoolss: Properly initialize the backends.
      spoolss: Implement EnumPorts.
      fusion/tests: Do not use an hardcoded path for the windows directory.
      fusion/tests: Fix remaining win98 failures in asmcache.
      mshtml/tests: Fix typos from copy&paste.
      mshtml/tests: Fix text in ok().
      shdocvw/tests: Dump the guid for additional interfaces.
      spoolss: Implement GetPrinterDriverDirectoryW.

Dmitry Timoshkov (2):
      mlang: Implement IMLangFontLink_GetStrCodePages.
      gdi32: Revert an unrelated part of 028617b90ba586bdb30723c700eea888c159ada7.

Dylan Smith (12):
      richedit: Removed unused ME_Document structure.
      hhctrl.ocx: Handle quoted filenames in doWinMain.
      richedit: Added missing initialization of nAvailWidth for ME_TextEditor.
      richedit: Don't show vertical scrollbar for single line controls.
      richedit: Fixed scrollbar visiblility calculation after SetScrollInfo.
      richedit: Return FALSE for EM_LINESCROLL with single line control.
      richedit: EM_SHOWSCROLLBAR hides scrollbars for less than page of text.
      richedit: Never wrap for single line controls.
      wordpad: Show error when user tries to add more than max tab stops.
      wordpad: Sort tab stops by numeric value rather than as string.
      richedit: EM_SETOPTIONS modify format rect when selbar setting change.
      richedit: Avoid crashing if TxSendMessage is called with NULL plresult.

Eddie Leung (1):
      msg711.acm: Pointer cast changed to DWORD_PTR.

Francois Gouget (42):
      crypt32: Merge two traces.
      wintrust: Make WINTRUST_ReAlloc() static.
      winetest: Annotate xmalloc() and xrealloc() with allocation size attribute.
      wined3d: Make debug{fixup_channel_source,yuv_fixup}() static.
      kernel32: Fix an off-by-one error in build_envp().
      mapi32/tests: Use win_skip() to skip over unimplemented functionality.
      user32/tests: Use win_skip() to skip over unimplemented functionality.
      setupapi/tests: Use win_skip() to skip over unimplemented functionality.
      serialui/tests: Use win_skip() to skip over unimplemented functionality.
      secur32/tests: Use win_skip() to skip over unimplemented functionality.
      rpcrt4/tests: Use win_skip() to skip over unimplemented functionality.
      oleaut32/tests: Use win_skip() to skip over unimplemented functionality.
      ntdll/tests: Use win_skip() to skip over unimplemented functionality.
      netapi32/tests: Use win_skip() to skip over unimplemented functionality.
      make_makefiles: Add 'use strict'.
      schannel/tests: Use win_skip() to skip over unimplemented functionality.
      kernel32/tests: Use win_skip() to skip over unimplemented functionality.
      kernel32/tests: Change to a win_skip() because we don't want to skip the GetConsoleCursorInfo(,NULL) test in Wine.
      imm32/tests: Use win_skip() to skip over unimplemented functionality.
      gdi32/tests: Use win_skip() to skip over unimplemented functionality.
      fusion/tests: Use win_skip() to skip over unimplemented functionality.
      ddraw/tests: Use win_skip() to skip over unimplemented functionality.
      opengl32/tests: Use win_skip() to skip over unimplemented functionality.
      opengl32/tests: Replace a couple of trace()s with skip()s.
      crypt32/tests: Use win_skip() to skip over unimplemented functionality.
      winemaker: Fix invalid usage of {open,close}dir() in fix_file_and_directory_names(). .
      winemaker: Fix handling of the global settings specified on the command line.
      d3d8/tests: Use win_skip() to skip over unimplemented functionality.
      d3d9/tests: Use win_skip() to skip over unimplemented functionality.
      dplayx/tests: Use win_skip() to skip over unimplemented functionality.
      shell32/tests: Use win_skip() to skip over unimplemented functionality.
      shlwapi/tests: Use win_skip() to skip over unimplemented functionality.
      snmpapi/tests: Use win_skip() to skip over unimplemented functionality.
      wininet/tests: Use win_skip() to skip over unimplemented functionality.
      winspool.drv/tests: Use win_skip() to skip over unimplemented functionality.
      wintrust/tests: Use win_skip() to skip over unimplemented functionality.
      comdlg32/tests: Use win_skip() to skip over unimplemented functionality.
      shell32: Remove WINAPI on static functions where not needed.
      advapi32/tests: Use win_skip() to skip over unimplemented functionality.
      advpack/tests: Use win_skip() to skip over unimplemented functionality.
      comctl32/tests: Use win_skip() to skip over unimplemented functionality.
      twain_32/tests: Use win_skip() to skip over unimplemented functionality.

Gerald Pfeifer (2):
      comctl32: Simplify fifteen tooltips function invocations.
      comctl32: Simplify eight TOOLBAR_ function invocations.

Hans Leidekker (11):
      fusion: Assembly version must be taken from the metadata, not the file version.
      fusion: Uninstall assembly used to check for presence of .NET runtime.
      fusion: Convert to Unicode.
      fusion: Assembly version numbers are WORDs.
      fusion: Allow spaces between attribute-value pairs in an assembly name.
      fusion: Don't trace contents of an out parameter.
      msi: Make comparison of assembly field names case insensistive.
      fusion: Use parsed properties for assembly enumeration instead of trying to parse the display name again.
      msi: Don't release view object twice in check_assembly_installed.
      fusion: Sort the list of assemblies built during enumeration.
      msi: Add reinstall tests.

Henri Verbeet (35):
      wined3d: Allow floating point values for WINED3DDECLUSAGE_BLENDWEIGHT.
      wined3d: Add some traces to state handlers.
      d3d9: Also copy the AutoDepthStencilFormat field in GetPresentParameters().
      quartz: Use a more appropriate size for the video renderer window.
      d3d8: Explicitly convert between D3DFORMAT and WINED3DFORMAT values.
      d3d9: Explicitly convert between D3DFORMAT and WINED3DFORMAT values.
      wined3d: Add DXGI formats to WINED3DFORMAT.
      dxgi: Convert DXGI_FORMAT values to WINED3DFORMAT values.
      d3d10core: Convert between DXGI_FORMAT and WINED3DFORMAT values.
      d3dx8: Don't use uninitialized memory in the D3DXQuaternionSlerp() test.
      d3d10core: Keep a reference to the wined3d device in the d3d10 device.
      wined3d: Add IWineD3DBuffer, use it in d3d10core.
      wined3d: Merge vertexbuffer.c with buffer.c.
      wined3d: Merge indexbuffer.c with buffer.c.
      wined3d: Add IWineD3DRendertargetView.
      d3d10core: Add a wined3d rendertarget view to the d3d10 rendertarget view.
      dxgi: Create a wined3d swapchain.
      dxgi: Implement IDXGISwapChain::GetBuffer().
      dxgi: Initial IDXGISwapChain::Present() implementation.
      wined3d: Implement IWineD3DDeviceImpl_ClearRendertargetView().
      wined3d: Accept WINED3DFMT_R8G8B8A8_UNORM in getColorBits().
      d3d10core: Don't pass 1 for multisample type to wined3d.
      d3d10core: Adjust a couple of FIXMEs.
      d3d10: Add the ID3D10EffectType interface.
      d3d10: Add the ID3D10EffectVariable interface.
      d3d10: Add the ID3D10EffectConstantBuffer interface.
      d3d10: Add the ID3D10EffectTechnique interface.
      d3d10: Add the ID3D10Effect interface.
      d3d10: Add the ID3D10EffectPool interface.
      d3d10: Add a stub ID3D10Effect implementation.
      d3d10: Add the ID3D10EffectPass interface.
      d3d10: Add the D3D10_SHADER flags.
      d3d10: Add the _D3D10_SHADER_MACRO struct.
      d3d10: Add some code for parsing DXBC data.
      d3d10: Add an initial effect parser.

Huw Davies (26):
      gdi32: Improve calculation of the character code text metrics.
      gdi32/tests: Only test the lowest byte of GdiRealizationInfo flags so that the test passes on Vista.
      gdi32/tests: GetTextFaceA called with a NULL buffer returns 0 on win98 and winMe.
      gdi32/tests: Win98 and WinMe actually do set error codes.
      gdi32/tests: Win9x doesn't ensure the facename is nul terminated. Compare the logfont one element at a time.
      gdi32: In a Baltic locale the last char of a symbol font is reported as 0xf8fd rather than 0xf0ff.
      gdi32/tests: Allow the first char code to point to glyph 0 (the .notdef glyph).
      inetcomm/tests: Object is a static singleton on win95.
      inetcomm/tests: AddRef on the stream doesn't return the ref count on win95.
      gdi32/tests: Win9x truncates the LONG elements of LOGFONT to 16 bit values.
      gdi32: The special handling of the character codes metrics for symbol fonts should be based on the presence of the MS symbol charmap rather than whether the font is enumerated as SYMBOL_CHARSET.
      gdi32/tests: From Vista onwards TabbedTextOut ignores justification, so remove that bit of the test.
      comdlg32/tests: Skip remaining tests if StartDoc fails.
      comdlg32/tests: Vista can return a failure from StartDoc when using the XPS driver - don't fail the test in this case.
      gdi32/tests: Output the required font height if the test fails.
      gdi32/tests: Output the requested font name on failure.
      gdi32: Set the font family as FF_MODERN if the panose marks it as monospaced.
      gdi32/tests: Add tests for the 120 dpi bitmap fonts.
      gdi32: Fix fractional scaling threshold.
      lz32/tests: Display filename on failure.
      gdi32/tests: Don't test the height that is 1.75 times the original font height. This is unscaled in winnt yet doubled in win9x.
      lz32/tests: For win9x, cBytes depends on the length of the filename.
      ole32/tests: win9x and winnt don't include the trailing '\0'.
      gdi32/tests: Add a broken() to an always true test.
      gdi32/tests: Don't expect the screen dc's bitmap to be mono 1x1.
      gdi32/tests: Winnt doesn't set last error when a NULL dc is passed to GetDIBits.

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

Igor Tarasov (5):
      comctl32: Make LISTVIEW_ProcessLetterKeys accept Unicode characters.
      comctl32: Implement LVN_ODFINDITEM.
      comctl32: Do not send LVN_DELETEITEM on LVM_DELETEALLITEMS for virtual listviews.
      comctl32: Make listview forward HDN_ITEMCLICK.
      comctl32: Make REBAR_StyleChanged respect wParam.

Jacek Caban (6):
      shdocvw: Added loading tests.
      shdocvw: Added QueryStatus implementation.
      jscript: Fixed handling block_cnt in jsheap_alloc.
      jscript: Reset mark in jsheap_clear.
      jscript: Mark free memory if heap warnings are turned on.
      urlmon: Make HttpProtocol implementation vtbl offset independent.

James Hawkins (13):
      fusion: Implement the IAssemblyEnum interface.
      fusion: Add initial implementation of IAssemblyCache::QueryAssemblyInfo.
      fusion: Add tests for the IAssemblyEnum interface.
      msi: Make sure a constant string's quotes match up.
      msi: Add tests for field zero of a record.
      msi: Set field zero to the name of the table containing the primary keys.
      msi: Make sure the view being updated is the same view the record was fetched from.
      msi: The _Tables and _Columns tables have no persistence attribute.
      msi: A non-temporary table cannot have a temporary primary key.
      msi: Don't create a temporary table that is not held.
      msi: Fix a failing test on win9x.
      msi: Trace the username to help debug test failures on certain machines.
      msi: Fix a failing test on win9x.

Jeremy White (8):
      sane.ds: Get resolution from sane, instead of hard coding -1.
      sane.ds: Implement stub support for ICAP_PIXELFLAVOR.
      sane.ds: Implement NATIVEXFER/MSG_GET for RGB scans.
      sane.ds: Implement support for ICAP_XRESOLUTION and ICAP_YRESOLUTION.
      sane.ds: Add support for ICAP_BITDEPTH.
      sane.ds: Added support for ICAP_UNITS.
      sane.ds: Fully support ICAP_PIXELTYPE.
      sane.ds: Revise to match identity structures with partial information.

Jon Parshall (1):
      fonts: Add the Symbol font.

Juan Lang (14):
      crypt32: Fix a typo.
      snmpapi: Relax tests to fix some failures.
      wintrust: Fix a few failing tests.
      advapi32: Fix failing tests on a number of systems.
      odbccp32: Fix a couple failing tests, and log more information about remaining failures.
      oleaut32: Remove an errant semicolon.
      oleaut32: Constify input parameter to VarR8FromDec.
      oleaut32: Implement VarDecFix.
      oleaut32: Implement VarDecInt.
      crypt32: Fix some test failures on Win9x.
      crypt32: Properly NULL-terminate decoded UTF8 strings.
      crypt32: Avoid reading freed memory when encountering a cyclic chain.
      crypt32: Fix more test failures on Win9x.
      crypt32: Fix more test failures on Win9x.

Juan M. Navarro (1):
      msvcrt/tests: Avoid size_t in printf format.

Ken Thomases (3):
      winecoreaudio: Fix a copy-paste accident ("In" vs. "Out").
      dsound: Replace a realloc-or-alloc with a free-then-alloc.
      dsound: Consolidate some duplicate code.

Michael Karcher (1):
      kernel32: Free profile before reloading.

Michael Stefaniuc (18):
      advapi32: Remove superfluous pointer casts.
      vwin32.vxd: Remove unused macros.
      vwin32.vxd: Remove superfluous pointer casts.
      rpcrt4: Remove superfluous pointer casts.
      mshtml: Remove superfluous pointer casts.
      gdi32: SetAbortProc is not a 16bit function but a 32bit one.
      wintrust/tests: Fix typos in ok() strings.
      msacm32.drv: dwInstance, dwParam1, dwParam2 and dwUser are DWORD_PTRs.
      msacm32: Split out the 16bit parts of the private header.
      msacm32: Fix some Win64 problems.
      shell32: Remove superfluous pointer casts from macros.
      shell32: Remove superfluous pointer casts.
      qcap: Remove superfluous pointer casts.
      imaadp32.acm: Don't truncate a pointer by casting it to a DWORD.
      winmm: Remove commented out code.
      winmm: Remove superfluous pointer casts.
      winemp3.acm: Remove the commented out III_dequantize_sample_ms function.
      winemp3.acm: Remove superfluous pointer casts.

Nicolas Le Cam (1):
      fusion/tests: Fix a test on some platforms.

Nikolay Sivov (6):
      gdiplus: Implemented GdipIsVisiblePathPoint with tests.
      gdiplus/tests: Some tests for Image raw format value.
      gdiplus/tests: Use expectf macro for floating point tests.
      gdiplus: Fix a docheader typo, add some missed headers.
      cmd: Always add a new line in 'type' output on single file mode.
      cmd: Reserve a place in buffer for NULL terminator.

Paul Bryan Roberts (2):
      makedep: Let umask decide mode for makefiles.
      advapi32: Add stub for GetSecurityInfoExA.

Paul Vriens (23):
      ddraw/tests: Don't crash on W2K.
      ddraw/tests: Use skip() instead of trace().
      fusion/tests: Don't crash on .NET 1.x.
      fusion/tests: Don't use strdup to prevent crashes when freeing memory.
      fusion/tests: Don't crash if we have a culture attribute.
      gdi32/tests: Report a missing function only once.
      itss/tests: Fix test failures on some Win95 and NT4 boxes.
      crypt32/tests: Don't crash on Win9x.
      fusion/tests: Fix a test failure on Win64.
      crypt32/tests: Don't crash on Win9x (test_msg_get_and_verify_signer).
      crypt32/tests: Prevent some crashes on Win9x (test_decode_msg).
      crypt32/tests: Prevent a crash on Win9x (test_data_msg).
      crypt32/tests: Prevent some crashes on Win9x (test_msg_control).
      winetest: Don't use W-functions in winetest to avoid issues on Win9x.
      winetest: Extend PATH if we have dlls that only come with .NET.
      d3d8/tests: Fix a test failure on VMware.
      d3d8/tests: Fix a test failure on some boxes.
      shlwapi/tests: Fix a few test failures on Win95 and some W2K.
      fusion/tests: Directories with no dll or exe are not enumerated.
      ddrawex/tests: Fix some test failures on W95.
      shlwapi/tests: Fix remaining test failures on several platforms.
      fusion/tests: Fix a few test failures on .NET 1.x.
      fusion/tests: Fix some test failures on .NET 1.x.

Rein Klazes (7):
      ole32: In PropVariantCopy() fix calculation size of array that contain pointers, not characters.
      comctl32: Fix for owner draw statusbar.
      user32: Do not handle WM_ENDSESSION in DefWindowProc() with test.
      user32/resources: Remove the "switch to... <Ctrl+Esc>" item from the system menu.
      user32: Implement support for HBMENU_POPUP_* magic menu bitmaps and use them to decorate the system menu.
      user32: Refine the size calculations for menu items with HBMMENU_POPUP magic bitmaps with some conformance tests.
      user32: In SetMenuInfo() implement the MIM_APPLYTOSUBMENUS. Also set last error if called with invalid parameters with tests.

Ricardo Filipe (6):
      setupapi: Add missing header values for SetupPromptForDisk.
      setupapi: Make hinstance global for all dialogs.
      setupapi: Implement SetupPromptForDiskW with only Cancel button active.
      setupapi: Initiate resources of SetupPromptForDisk dialog.
      setupapi: Enable Browse action on SetupPromptForDisk dialog.
      setupapi: Implement Ok button action in SetupPromptForDiskW dialog.

Rob Shearman (22):
      widl: Fix marshalling/unmarshalling of enum arguments.
      widl: Call Struct and Union phase functions for reference pointers to structures and unions.
      widl: Only duplicate a type if absolutely necessary.
      widl: Call Pointer function for freeing non-conformant strings and for all phases for returned non-conformant strings, as is done for conformant strings.
      include: Add WDT_INPROC64_CALL cases to unions in wtypes.idl.
      ole32: Round the extected size in the marshal and moniker tests using the results of sizing a global, not a heap pointer.
      widl: Fix typos in write_remoting_arg which caused ref pointers to unions to not result in direct calls to NonEncapsulatedUnion/EncapsulatedUnion functions.
      winejoystick.drv: Use CP_UNIXCP instead of CP_ACP when converting a string that comes from the OS.
      wineoss.drv: Use CP_UNIXCP instead of CP_ACP for converting strings that come from system library functions or system headers.
      gdi32: Move 16-bit functions not exported in gdi32.dll into files compiled only when 16-bit functionality is enabled.
      widl: Don't directly access the type structure when determining the types in expressions.
      widl: Use type_get_type to determine the types during statement enumeration.
      widl: Use type_get_type to determine the types of types during header writing.
      widl: Use type_get_type to determine the types of types during parsing and checking.
      widl: Use type_get_type to determine the types of types during typelib generation.
      widl: Use type_get_type to determine the types of types during C client, server and proxy code generation.
      widl: Add typegen_detect_type and use it.
      imm32: Fix crash in DllMain when FreeLibrary is called from a thread which existed before the DLL was loaded.
      imm32: Lazily allocated thread-local data.
      rpcrt4: Fix use of uninitialised variable in NdrDllRegisterProxy.
      widl: Ignore pointer attributes applied to interface pointers.
      widl: Only classify top-level pointers as ref pointers if they don't have any other pointer attributes.

Stefan Dösinger (8):
      wined3d: Duplicate GL textures for srgb switching.
      wined3d: Add a debug function for surface locations.
      wined3d: Pass the requested srgb flag to PreLoad.
      wined3d: Properly update last_was_pshader.
      d3d9: Add an alpha blending test.
      wined3d: Put the color_correction calls into the instruction handlers.
      wined3d: Make shader_glsl_get_sample_function aware of *Lod functions.
      wined3d: Create a common sampling function in GLSL.

Stefano Guidoni (1):
      msacm32: Typo in Italian resource file.

Thomas Kho (1):
      iphlpapi: Fix Solaris build error due to ERR redefinition.

Vincent Povirk (14):
      gdiplus: Handle negative stride in GdipCreateBitmapFromScan0.
      gdiplus: Fix GdipCreateBitmapFromHBITMAP flipping images vertically.
      include: Add IShellItem to headers.
      shell32: Add stub implementation of IShellItem.
      shell32: Partially implement SHCreateShellItem.
      include: Add IPersistIDList to headers.
      shell32: Add IPersistIDList interface to ShellItem objects.
      shell32: Implement UnixFolder_IShellFolder2_GetDefaultColumn.
      mapi32: Add version resource.
      wine.inf: Create a fake mapi32.dll.
      shell32: Implement Get/SetIDList on ShellItem objects.
      shell32: Add a message for opening files with no association.
      kernel32/tests: Remove a redundant check for ERROR_CALL_NOT_IMPLEMENTED.
      kernel32/tests: Fix overlapped named pipe test.

Vitaliy Margolen (2):
      dinput: Let each device decide which hook event to skip.
      kernel32: Implement GetShortPathName16.

--
Alexandre Julliard
julliard@winehq.org
