The Wine development release 1.7.18 is now available.

What's new in this release (see below for details):
  - Improved OLE Accessible Object support.
  - Window sizing improvements in the Mac driver.
  - Fixes for various memory issues found by Valgrind.
  - A few more MSHTML functions.
  - Some DirectDraw cleanups.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.18.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.18.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/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.7.18 (total 80):

   5944  IBM Lotus Notes 7.x/8.x: 'File > Preferences > User Preferences...' results in crash
   9667  Grim Fandango hangs if X in 24bpp mode
  13581  mouse corruption in lionheart
  14060  Magic: The Gathering Online 3.x fails to connect/login to server
  15784  Grim Fandango: altered colors
  16966  Powerslide segfaults
  17105  Magic: The Gathering Online 3.0 fails to log in with L0014
  18119  SmartDraw 2009/2010/CI aborts after displaying trial window
  18433  Rosetta Stone Online Spanish (version 0.87594D 221) hangs at "5" during startup
  18614  Problem with starting of wine or winecfg
  19151  Spotify crashes in the mittle of a song and give me a pop-up fault message
  19896  GPS Utility 5.02 fails to connect to GPS device (USB serial)
  20336  GetDriveTypeW exposes partially uninitialized out parameter iosb in NtDeviceIoControlFile ?
  20853  Write buffer overflow in msi/tests/automation.c?
  22515  Gothic 2 1.3 Infogrames Edition installer crashes
  22781  ExpressPCB crashes when you try to upload a board
  23857  Half-Life (Steam) doesn't run
  23995  Football Manager 2010 fails to start
  24064  Many steam games crash because of GameOverlayRenderer.dll
  25241  Steam: Source based games will not start
  26043  advapi32/security tests shows some leaks in valgrind
  26066  use after free in X11DRV_GetKeyboardLayout?
  26639  Steam: crashes randomly while downloading L4D2
  26895  Microsoft 3D Movie Maker: rendering is red mesh/black text on black background
  27102  VoipBuster 4.x crashes on startup
  27413  Segmentation fault in Kudos 2 Demo
  27441  El Matador crashes when starting a level(ASSERTION failed)
  28398  Might & Magic VI Heroes - fails to start game, crashes right after menu
  28621  Magic: The Gathering Online 3.x updater tool 'Kicker.exe' hangs
  28628  advapi32/security.ok: GetTokenInformation(Token, TokenGroups,...) returns partial garbage leading to uninitialized memory accesses?
  28695  Uninitialized variables in create_rebar
  28697  ieframe/tests/ie.ok: Use-after-free (after ImageList_ReplaceIcon)
  28708  gdiplus/tests/image.ok: test_fromhicon triggers reference of uninitialized variable from SetDIBits
  28712  winhttp/notification.ok: invalid read in check_notification
  28761  ddraw/tests: invalid writes in ddraw_surface7_Release and friends
  28767  shell32: uninitialized memory used during TRASH_EnumItems, triggered by "make recyclebin.ok"
  28797  comctl32/tests/listview.ok triggers uninitialized memory read of local variable in NC_DrawCaption()
  28815  kernel32/tests/fiber.ok shows longjmp-related uninitialised memory references
  28921  Battlefield 3 crashes on installation
  28943  Notepad2 v4.2.25 installation fails
  29882  Authorware Web Player 2004 Plugin - mouseClicks and keystroke are not recognized
  30352  builtin iexplore + selenium hangs on startup
  30518  Multiple 64-bit applications need KERNEL32.dll.RtlInstallFunctionTableCallback (Mono, Metatrader 5 Agent)
  30616  7.62 High Calibre configuration tool unusable (can't make changes)
  31918  Saints Row the Third (Steam) crashes on startup (needs support for PrimitiveMiscCaps 'D3DPMISCCAPS_PERSTAGECONSTANT')
  32108  Borderlands 2 (Steam) fails to start
  32138  Dishonored crashes on startup
  32348  Crysis 2 fails to launch
  33146  Path of Exile "Allocating Space" very slow, due to NtFlushVirtualMemory being synchronous
  33347  WISO (Steuer) Sparbuch 2012/2013 fails during online activation (needs HTMLElementCollection_get__newEnum)
  33606  Spin Tires: black menu with missing text (per-stage constants handling needed)
  33745  SimCity Societies launcher (.NET app) crashes on startup (incorrect canonicalization of URL containing trade mark sign character U+2122)
  33958  wine programs crash with joystick connected (OS X)
  34581  Shadow Era client v20120 (Mono game) reports 'Fatal error in gc - GetThreadContext failed' during update/patching
  34698  QQGame 2011 can't load (broken app uses LocalAlloc handle as direct buffer without prior locking)
  34823  Sybase PowerDesigner 16.5 'pdshell16.exe' (.NET 4.x app) fails on startup
  35321  Wolverine: game crash after Unreal technology logo
  35788  Planetside 2 crashes on launch (uninitialized/implausible MONITORINFOA.cbSize passed to GetMonitorInfoA, causing stack buffer overwrite)
  35835  Symantec Norton 360 installer crashes on unimplemented function advapi32.dll.GetTraceLoggerHandle
  36015  FIFA 2002 demo crashes because gethostbyaddr with magic loopback address return NULL
  36024  Adobe Reader 8.1.1 fails to install
  36026  Hawking control center driver install tool crashes during uninstallation (needs shlwapi.SHRegCreateUSKeyA implementation)
  36036  Does not run WorldOfTanks 0.9 in 1.7.17
  36043  Battlefield 1942: Crashes after map loading
  36046  Absolute Blue demo launcher refuses to run
  36050  Dragon NaturallySpeaking 12.x crashes on unimplemented function msvcr100.dll._wcsupr_l
  36068  Symantec Norton 360 installer needs advapi32.dll GetTraceEnableLevel and GetTraceEnableFlags stubs
  36069  invalid free in oleaut32/tests/vartype test
  36070  Football Manager 2010 demo WMI query 'SELECT Manufacturer,CurrentClockSpeed FROM Win32_Processor' results in endless looping
  36078  .NET 3.0 installer encounters an error and rolls back the installation
  36080  Fifa 11 demo crashes on startup
  36099  Ankh 2: Heart of Osiris fails to start
  36106  Installshield Wizard:  scrollbar appears where it shouldn't be
  36114  msi/action definite leak in is_process_limited
  36132  valgrind shows some leaks in gdiplus/tests/graphics.c
  36149  valgrind shows some an unintialized variable in jscript/tests/run.c
  36161  valgrind shows a leak in wmiutils/tests/path.c
  36177  Saints Row the Third (Steam) crashes on startup (expects 'PixelShader1xMaxValue' >= 32)
  36207  Steel Beasts v1.19 demo installer crashes on exit
  36210  Sybase PowerDesigner 16.5 'pdshell16.exe' (.NET 4.x WPF app) wants oleacc.CreateStdAccessibleObject

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

Changes since 1.7.17:

Akihiro Sagawa (4):
      gdi32/tests: Make bmi structure const.
      msvfw32/tests: Add tests for drawdib.
      msvfw32: Drawdib doesn't support inverted DIBs.
      msvfw32: Fix uncompressed bitmap size handling in DrawDibDraw.

Alex Henrie (1):
      bcrypt: Add stub for BCryptOpenAlgorithmProvider.

Alexandre Julliard (8):
      msvcrt: Update comments for non-exported functions.
      dxguid: Remove some symbols that aren't exported in native.
      ntdll: Don't wait for writes to complete in NtFlushVirtualMemory.
      gdi32/tests: Don't fetch the bits into the DIB itself.
      msvcp90: Fix the mbstowcs_s macro return value.
      winegcc: Only pass large-address-aware option for i386 builds.
      user32: Don't bother returning a value from the SetWindowRgn driver entry point.
      comctl32/imagelist: Correctly resize the alpha flags when clearing the image list.

Alistair Leslie-Hughes (4):
      include: Add dvoice.h.
      dpnet/tests: Use dxguid for tests.
      dpnet: Improve error checking in Get/Set SP.
      dpnet: Cleanup IDirectPlay8Address.

Andrew Eikum (2):
      user32: Allow setting horizontal extent even without WS_HSCROLL.
      user32: Only update listbox horizontal scroll info if WS_HSCROLL is set.

Andrew Sheldon (1):
      wined3d: Add NVIDIA Geforce GTX 780 to supported device list.

André Hentschel (9):
      advapi32: Add stub for GetTraceLoggerHandle.
      winemenubuilder: Use boolean return values in boolean functions.
      wined3d: Add NVIDIA Geforce GTX 780 Ti to supported device list.
      advapi32: Add stubs for GetTraceEnableFlags and GetTraceEnableLevel.
      shell32: Use boolean return value in boolean function.
      dbghelp: Use boolean return value in boolean function.
      dbghelp: Make pdb_load_stream_name_table a void function.
      winemenubuilder: Return FALSE on error when processing links and URLs.
      wscript: Fix function types.

Austin English (1):
      msxml3: Complain louder if libxslt was missing at compile time.

Bruno Jesus (1):
      dinput: Remove duplicated TRACE check.

Dmitry Timoshkov (3):
      user32/tests: Add AppendMenu/ModifyMenu MF_POPUP tests.
      user32: When converting from MF_ flags to MENUITEMINFO ignore MF_POPUP if id is not a menu.
      ole32: Add support for VT_DISPATCH/VT_UNKNOWN to PropVariantClear and PropVariantCopy.

Erich Hoover (1):
      user32: Reduce the minimum Set[System]Timer from 15 ms to 10 ms.

François Gouget (3):
      ddraw: Remove WINAPI on static functions where not needed.
      ole32/tests: Add a trailing '\n' to an ok() call.
      dpnet/tests: Add a trailing '\n' to an ok() call.

Frédéric Delanoy (2):
      po: Update French translation.
      Assorted spelling/grammar fixes.

Gerald Pfeifer (1):
      readme: Raise the minimum version of FreeBSD to 8.0.

Hans Leidekker (6):
      wbemprox: Return selected properties only from IWbemClassObject::GetNames.
      wbemprox: Return selected properties only from IWbemClassObject::Next.
      wbemprox: Implement Win32_Processor.CurrentClockSpeed.
      wmiutils: Fix a memory leak (valgrind).
      msi/tests: Fix a couple of memory leaks (valgrind).
      msi: Avoid a crash when MIME entries point to non-existing extensions.

Henri Verbeet (30):
      d3d8/tests: Use a separate device for offscreen_test().
      d3d8/tests: Use a separate device for z_range_test().
      d3d8/tests: Use a separate device for fog_test().
      d3d8/tests: Use a separate device for clear_test().
      d3d8/tests: Use a separate device for lighting_test().
      d3d8/tests: Use a separate device for depth_clamp_test().
      d3d8/tests: Use a separate device for test_sanity().
      d3d8/tests: Handle the Windows 8 testbot results in zenable_test().
      d3d8/tests: Handle the Windows 8 testbot results in cnd_test().
      wined3d: Ignore invalid PCI vendor/device overrides.
      wined3d: Simplify the driver version info lookup in init_driver_info().
      wined3d: Introduce a separate function to calculate the pitch for a given format and width.
      ddraw: Validate the pitch for user memory surfaces against the unaligned minimum pitch.
      wined3d: Implement support for per-stage texture stage constants.
      wined3d: Get rid of surface_set_texture_target().
      ddraw: Implement D3DOP_STATELIGHT on top of IDirect3DDevice3_SetLightState().
      ddraw: Implement D3DOP_STATERENDER on top of IDirect3DDevice3_SetRenderState().
      ddraw: Cleanup the D3DOP_PROCESSVERTICES implementation a bit.
      ddraw: Cleanup d3d_execute_buffer_QueryInterface().
      ddraw: Don't return an error when setting a 0 material handle in d3d_device3_SetLightState().
      ddraw/tests: Handle the Windows 8 testbot in test_primary_palette().
      ddraw: Disable lighting when a 0 material handle is set.
      ddraw: Reject setting a 0 material handle in d3d_viewport_SetBackground().
      ddraw: Only output a warning when clearing a viewport without background material.
      ddraw/tests: Add some basic material tests.
      wined3d: Bump ps_1x_max_value.
      wined3d: Fix a couple of string declarations.
      ddraw: Cleanup DDRAW_dump_pixelformat().
      d3dcompiler: Make some string arrays const.
      d3d9/tests: Merge vertexdeclaration.c into device.c.

Huw D. M. Davies (4):
      include: Add a few missing out-precision and clip-precision defines.
      shlwapi/tests: Fix win8 test failures.
      ole32/tests: Fix win8 test failures.
      kernel32/tests: Fix test for win8 heap layout.

Jacek Caban (17):
      mshtml: Added IHTMLElementCollection::get__newEnum implementation.
      mshtml: Added IHTMLElementCollection::get__newEnum tests.
      mshtml: Fixed HTMLElementCollectionEnum_Next implementation for NULL pCeltFetched.
      mshtml: Added IHTMLDOMChildrenCollection::get__newEnum implementation.
      mshtml: Added IHTMLDOMChildrenCollection::get__newEnum tests.
      vbscript: Return proper error on invalid argument in Chr.
      mshtml: Added IConnectionPoint::EnumConnections implementation.
      ieframe: Improved debug traces.
      mshtml: Introduce a new debugstr_mshtml_guid helper for printing GUIDs.
      mshtml: Renamed nsIDOMHTMLSelectElement::Remove to select_Remove to avoid conflict with nsIDOMElement.
      mshtml: Removed invalid nsAString_InitDepend from HTMLTable_put_bgColor and fixed error handling.
      jscript: Fixed uninitialized variable access in interp_end_finally.
      iexplore: Mark iexplore.exe as large address aware.
      vbscript: Forward Invoke call to InvokeEx.
      msctf: Added ITfInputProcessorProfileMgr interface stub implementation.
      vbscript: Allow property getters to take arguments.
      vbscript: Added InvokeEx(DISPATCH_PROPERTYGET) implementation.

Jérôme Gardou (1):
      msi: Expand REG_EXPAND_SZ keys when resolving AppSearch entries.

Ken Thomases (5):
      winex11: Remove dead store into win_gravity in get_window_attributes().
      winemac: For GetKeyNameText(), use the hard-coded table in preference to the Mac keyboard layout.
      winemac: Send WM_SIZING messages during resizing to let app alter the proposed size.
      winemac: Disable moving or resizing windows when cursor clipping is in effect.
      configure: Use the discovered LCMS2_LIBS when testing linking against lcms2.

Matteo Bruni (7):
      d3dx9/tests: Release the device when skipping some tests.
      d3dx9/tests: Don't fail a test if volume textures are not supported.
      d3dx9/tests: Fix expected values when mipmaps on cube maps are not supported.
      d3dx9/tests: Take MaxVolumeExtent into account in some tests.
      d3dcompiler: Remove a couple of noisy traces.
      d3dcompiler: Pre/post increment/decrement operators are unary.
      d3dcompiler: add_func_parameter is only used in hlsl.y.

Nikolay Sivov (23):
      gdiplus: Properly delete a DC.
      services: Remove loop that's not really used anymore (Coverity).
      atl: Move IUnknown methods to IOleClientSite.
      po: Update Russian translation.
      comctl32/treeview: Restore hdc before CDDS_ITEMPOSTPAINT.
      mshtml/tests: Remove old system version check that doesn't work anymore.
      netprofm/tests: Fix a test failure on Win7/Win2008 systems.
      shlwapi: Implement SHRegCreateUSKeyA().
      oleaut32: Properly free record name (Valgrind).
      uxtheme/tests: No need to check last error when error code is explicitly returned.
      advapi32/tests: Fix some leaks in tests (Valgrind).
      comctl32/tests: Initialize text buffer pointer (Valgrind).
      crypt32/tests: Fix some leaks (Valgrind).
      gdi32/dibdrv: Fix a clipped_rects leak (Valgrind).
      dwrite/tests: Fix a font instance leak (Valgrind).
      gdiplus/tests: Fix some leaks when running with Wine (Valgrind).
      gdiplus: Simplify GdipResetImageAttributes(), fix remap table leak (Valgrind).
      msxml3: Fix a leak when trying to add to readonly collection (Valgrind).
      msxml3/tests: Fix enumerator instance leak (Valgrind).
      msxml3: Fixed attribute value string leak (Valgrind).
      msxml3: Fix XPath query result leak (Valgrind).
      msxml3/tests: Fixed attributes map leak (Valgrind).
      oleaut32: Always free TLIBATTR in LoadRegTypeLib() (Valgrind).

Patrick Rudolph (4):
      user32: Check for valid cbSize in GetMonitorInfoA.
      user32/tests: Add tests for valid cbSize in GetMonitorInfoA.
      user32: Check for valid cbSize in GetMonitorInfoW.
      user32/tests: Add tests for valid cbSize in GetMonitorInfoW.

Piotr Caban (28):
      msvcrt: Don't raise exception in _invalid_parameter.
      msvcrt: Remove _set_invalid_parameter_handler calls from msvcrt tests.
      msvcrt: Remove no longer needed exports.
      msvcrt: Use win_skip when function is not exported.
      msvcrt/tests: Fix _popen test failures when path contains spaces.
      msvcr80: Add type_info::name partial implementation.
      msvcrt: Don't use default process heap.
      include: Don't redefine LIBID_Accessibility in oleacc.idl.
      oleacc: Add LresultFromObject implementation.
      oleacc: Add ObjectFromLresult implementation.
      oleacc: Add initial LresultFromObject tests.
      oleacc: Add AccessibleObjectFromWindow implementation.
      oleacc: Add AccessibleObjectFromWindow tests.
      msvcrt: Add _wcsupr_l implementation.
      msvcrt: Handle seh exception rethrowing in catch_function_nested_handler.
      msvcrt: Handle seh exceptions rethrowing in cxx_frame_handler.
      oleaut32: Handle VariantCopy errors in VariantChangeTypeEx.
      oleacc: Add default client accessible object stub.
      oleacc: Add Client_get_accChildCount implementation.
      oleacc: Add Client_get_accName implementation.
      oleacc: Add Client_get_accValue implementation.
      oleacc: Add Client_get_accDescription implementation.
      oleacc: Add Client_get_accRole implementation.
      oleacc: Add Client_get_accHelp implementation.
      oleacc: Add Client_get_accDefaultAction implementation.
      oleacc: Add Client_get_accHelpTopic implementation.
      oleacc: Add Client_get_accRole implementaiton.
      oleacc: Add tests for default client accessible object.

Qian Hong (2):
      wscript: Don't fail silently for unsupported switches.
      include: Added some ATL function prototypes.

Stefan Dösinger (7):
      ddraw: Only ddraw7 disallows SetPalette on sublevels.
      ddraw/tests: Add a test for mipmap palettes.
      ddraw/tests: Test P8 to RGB blits.
      ddraw/tests: Skip the ddraw7 primary palette test if 8 bpp mode doesn't work.
      ddraw/tests: Add a test for getdc palette handling.
      ddraw/tests: Test mipmap GetDC behavior.
      wined3d: Remove broken gdi palette code.

Thomas Faber (2):
      usp10: Do not write to last script item if buffer space is insufficient.
      qmgr: Register WINE_REGISTRY resource in DllRegisterServer instead of a nonexistent inf file.

Victor Martinez Calvo (2):
      dbghelp: Fix invalid assignment in symt_fill_sym_info.
      msvcrt: Avoid null dereference in TRACE in MSVCRT__wfreopen.

Vincent Povirk (14):
      user32/tests: Add test calling EndMenu from WM_ENTERMENULOOP.
      user32/tests: Add a message test for popup menus on windows that have capture.
      user32/tests: Our popup test window loses capture to itself.
      shell32: Respect CMIC_MASK_NO_CONSOLE in ShellLink InvokeCommand.
      shell32: Pass MASK_NO_CONSOLE through to context menu handlers.
      shell32: Use CREATE_NEW_CONSOLE when SEE_MASK_NOCONSOLE is omitted.
      shell32/tests: Use SEE_MASK_NO_CONSOLE with ShellExecuteExA.
      start: Don't use SEE_MASK_NO_CONSOLE.
      appwiz.cpl: Don't use SEE_MASK_NO_CONSOLE to run installers.
      ole32/tests: Add tests for storage locking.
      ole32/tests: Add tests for sharing storages in transacted mode.
      ole32: Reserve the range lock sector.
      ole32: Initial storage file locking implementation.
      gdiplus/tests: Fix image leak in graphics test.

Zhenbo Li (2):
      mshtml: Added IHTMLElement3::contentEditable property implemention.
      mshtml: Added IHTMLTable::width property implementation.

--
Alexandre Julliard
julliard@winehq.org
