The Wine development release 1.7.20 is now available.

What's new in this release (see below for details):
  - X11 drag & drop fixes.
  - A few more C/C++ runtime functions.
  - Fixes for various memory issues found by Valgrind.
  - Some OLE storage fixes.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.20.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.20.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.20 (total 88):

   9616  Pronunciation Patterns 3 doesn't start
  12371  Neural Noise Synthesizer (Thinstall virtualization wrapped app) fails to launch (GetEnvironmentVariableA/W needs to respect size limits for temp buffer allocation)
  13432  ZDaemon: freezes when exiting launcher
  13459  Oberon game launcher (incl. buttons) does not work
  13719  E-texteditor installs but freezes on run
  14693  Program halts when on another virtual desktop
  14718  Rappelz  will not update itself
  14873  Voipstunt crashes trying to connect to server
  15417  Easy68k: Exiting without closing help window causes page fault.
  16127  Mouse Buttons do not work in BBC Basic For Windows 5.80a
  17035  RPG Maker XP 1.x: Script editor selects complete script when program gets focus
  18195  Medal of honor pacific assault: In bootcamp there are many bush glitches
  19048  RegCleaner 4.3.0.780: assertion failure in LISTVIEW_GetItemT()
  20077  User Interface of RPG Maker XP 1.x is unusable and freezes
  20485  Uninitialised memory reference in FTP_DoPassive
  20630  Services written in Delphi 6: impossible to start by "net start" command
  20929  IDGET - Doesn't show disc drive
  22494  Microsoft Office 2007 cannot be activated
  22877  RegCleaner crashes on start
  23696  oxygen xml editor license page does not appear in web browser
  24302  STALKER: Shadow of Chernobyl install reports incorrect hard disk space
  24513  Background in VirtuaGirl is always black
  24593  Livestream Procaster: login fails
  24594  Livestream Procaster: Procaster's game streaming mode doesn't work due to a "DirectX Test Error"
  25088  Crysis Warhead 1.1.x does not start
  25799  GFWL (Games For Windows Live) 3.x client crashes at startup
  26402  Cain and Abel: Crashes in libfreetype/libc
  27433  mass effect 2 heisencrash on non-smp system
  28108  urlmon: url.ok occasional test failure: unexpected call OnProgress_SENDINGREQUEST
  28133  twain_32/dsm.ok crashes occasionally?
  28710  ws2_32: sock.ok reads/writes invalid memory during async_getservbyport?
  28821  kernel32/tests/time.ok: uninitialized memory read in GetCalendarInfoA
  28822  mmdevapi/tests/capture.ok fails sometimes under valgrind?
  28827  Digsby (PIM) won't start
  28835  rpcrt4/tests/rpc_protseq.ok fails under valgrind
  28865  Ski Resort Tycoon 2 crashes on startup
  29430  RPG Maker VX crashes during startup
  29662  IBankWizard.msi crash at the end of installing
  30209  Exchange file manager (.NET 3.5 app) crashes on startup
  30398  Word / Excel 2007: crashes while opening or saving documents
  30484  rFactor 2 launcher UI does not detect machine setup
  30601  Grand Theft Auto: San Andreas crashes on startup
  31177  SugarSync (sugarsyncmanager) crashes on startup
  31221  Acrobat 8 page one is full of artifacts
  31225  SA-MP (Multiplayer Online game mod for Grand Theft Auto: San Andreas): chat and scrollbar offscreen, text invisible
  31332  Project64: about page fails to render
  31532  Grand Theft Auto: San Andreas does not work on 75Hz
  32353  Grand Theft Auto: San Andreas crashes on new game
  32388  Mezzmo shows runtime errors while starting
  32545  TaxACT 2012 crashes at startup
  32800  construct2 crashed on open file dialog
  32849  Path Of Exile sound glitch
  33882  gtags (GNU GLOBAL) 6.2.x crashes on indexing of large projects
  34646  Virtual DJ v7.4 crashes on startup
  35426  RPG Maker VX Runtime: games crash on startup
  36002  ImpotRapide 2013 (.NET 4.0 app) crashes on unimplemented function msvcp110.dll.?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ
  36065  PunkBuster service tests fail (DeleteService should mark active services in SCM database as pending for deletion)
  36139  msi/db test crash on wine compiled with gcc-4.9.0
  36153  Borderlands 2 mouse focus no longer works properly
  36377  League of Legends crashes at game start with wine 1.7.18
  36432  valgrind shows a possible leak in shell32/tests/recyclebin.c
  36459  ICQ 7.x 'ServiceStarter.exe' tool crashes during post-install step
  36477  Nikon Message Center 2 (part of Nikon Capture NX2) crashes on startup (needs support for 'CIM_Processor' WMI class)
  36481  CFNetworkCopySystemProxySettings and kCFNetworkProxiesProxyAutoConfigURLString are unavailable
  36482  Raiden Legacy (DotEmu) shows black screen after launch
  36491  Theatre of War 3: Korea Demo hangs on start
  36496  Dragon NaturallySpeaking 12.x crashes on unimplemented function msvcr100.dll._wcslwr_l
  36505  DynDNS Updater 4.1.6 crashes on startup
  36507  valgrind shows a definite leak in dpnet/tests/server.c
  36518  Selecting character mission crashes Star Wars Rebellion 1.00
  36526  When Delphi programs (e.g. InnoSetup) start, their global variables are corrupt.
  36540  3dmark 2003 needs msvcp70.dll.?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ
  36541  Prince of Persia (2008) launcher fails to start, crashes in msvcrt
  36573  valgrind shows uninitialized memory use in shlwapi/tests/path.c
  36580  valgrind shows two definite leaks in user32/tests/cursoricon.c
  36584  valgrind shows a leak in winmm/tests/mci.c
  36588  valgrind shows a definite leak in userenv/tests/userenv.c
  36590  valgrind shows a definite memory leak in usp10/tests/usp10.c
  36591  valgrind shows uninitialized memory use in vbscript/tests/run.c
  36602  valgrind shows a possible leak in wininet/tests/urlcache.c
  36603  valgrind shows uninitialized memory use in winspool.drv/tests/info.c
  36604  valgrind shows two definite leaks in winspool.drv/tests/info.c
  36605  valgrind shows a definite leak in wintrust/tests/softpub.c
  36627  Games For Windows Live 2.0.0687.0 (PANORAMA_V2.00_RTM.090421-2351) needs MSASN1.dll
  36661  valgrind shows an unintialized write in ws2_32/tests/sock.c: test_completion_port()
  36667  VBScript doesn't handle numbers in exponential form (e.g. 1e2)
  36698  AudibleManager 5.5.x crashes at startup
  36715  3dmark 2003 needs msvcp70.dll.??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z

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

Changes since 1.7.19:

Akihiro Sagawa (6):
      oleaut32/tests: Use a boolean constant for BOOL argument.
      oleaut32/tests: Test UnRegisterTypeLib surely deletes registry keys.
      oleaut32: Delete opposite side keys on UnRegisterTypeLib.
      kernel32: Avoid uninitialised value read in GetCalendarInfoA.
      kernel32: Return correct buffer size when returning DBCS characters.
      user32: Don't close a popup menu when clicking a sub-menu parent item twice.

Alexandre Julliard (4):
      vbscript: Avoid using bool keyword.
      comctl32/tests: Output message sequences only on failure.
      gdi32/tests: Remove some noisy traces.
      user32/tests: Remove some noisy traces.

Alistair Leslie-Hughes (1):
      dpnet/tests: Correct memory leak (valgrind).

Andrei Slăvoiu (1):
      wined3d: Recognize cards that expose GLSL 1.30 as DX10 capable even if they don't support EXT_GPU_SHADER4.

Andrew Eikum (6):
      mmdevapi: Make buffer size divisible by number of periods.
      mmdevapi: Clock rate should be in bytes for shared mode.
      user32: Remove unused internal menu messages.
      riched20/tests: Allow conversions to non-English codepages.
      ole32: Fix return value logging.
      ole32: Fix return type.

Aric Stewart (1):
      winemac: Reposition cursor for IME composition.

Austin English (3):
      include: Add missing EntryInProgress member to _PEB_LDR_DATA struct.
      user32: Fix a comment.
      msasn1: Add stub dll.

Bruno Jesus (17):
      ws2_32: Take care of EINTR inside the helpers.
      ws2_32: Avoid memory allocation for simple sends.
      ws2_32: Avoid memory allocation for simple receives.
      user32/tests: Fix a memory leak (valgrind).
      winmm: Fix a memory leak in mciSendStringW (valgrind).
      wintrust/tests: Fix a memory leak (valgrind).
      winspool.drv: Do not try to check the registry if opening the printer fails (valgrind).
      userenv/tests: Fix a memory leak (valgrind).
      wininet/tests: Fix a memory leak (valgrind).
      shlwapi: Avoid reading past the pointer in PathCreateFromUrlW (valgrind).
      usp10: Fix a memory leak in _ItemizeInternal (valgrind).
      wininet: Use a helper to send data and take care of EINTR.
      winetest: Take care of EINTR on send/recv.
      rpcrt4: Take care of EINTR on send/recv.
      wininet: Use a helper to receive data and take care of EINTR.
      ws2_32/tests: Initialize a test buffer (valgrind).
      kernel32: Limit the environment variable size to 32767 in GetEnvironmentVariable.

Damjan Jovanovic (8):
      winex11.drv: text/html should be imported as CF_HTML ("HTML Format"), not CFSTR_INETURL ("UniformResourceLocator").
      winex11.drv: Don't bother counting how many XDND selections are converted.
      winex11.drv: Use the global memory functions to allocate the memory for STGMEDIUM's hGlobal.
      winex11.drv: Use the clipboard functions and formats to import selections that XDND doesn't support.
      winex11.drv: Use the clipboard to import text/html XDND selections.
      winex11.drv: Import text/plain XDND selections through the clipboard.
      winex11.drv: Store XDND cached data in global memory objects.
      winex11.drv: Migrate importing text/uri-list XDND selections to the clipboard.

Daniel Beitler (1):
      msi: Prevent call to memset with a null pointer in get_tablecolumns function.

Felix Janda (3):
      server: Add missing includes of poll.h.
      dnsapi: stdio.h needs to be included for sprintf().
      iphlpapi: stdio.h needs to be included for sprintf().

François Gouget (2):
      msvcrt/tests: Make qsort_comp() static.
      scrrun: Fix compilation on systems that don't support nameless unions.

Guillaume Charifi (2):
      ole32: CoCreateGuid returns E_INVALIDARG on null-GUID.
      pdh: Implement PdhExpandCounterPathA/W.

Hans Leidekker (9):
      wininet: Fix build on Mac OS X 10.5.8.
      winhttp: Fix build on Mac OS X 10.5.8.
      wbemprox: Handle NULL out parameter to object methods.
      wbemprox: Add a partial implementation of CIM_Processor.
      winhttp/tests: Mark some test results on Windows 8 as broken.
      winhttp: Ignore URL components if the buffer length is zero.
      winhttp: Only set the scheme if we have a valid URL.
      wininet/tests: Fix a couple of test failures on Internet Explorer 11.
      wininet: Only set the content length header if it's not explicitly set by the user.

Henri Verbeet (20):
      d2d1: Add the ID2D1HwndRenderTarget interface.
      d2d1: Add the ID2D1DCRenderTarget interface.
      d2d1: Add the ID2D1GdiInteropRenderTarget interface.
      d2d1: Add the ID2D1Factory interface.
      wined3d: Increase the SM4 instruction length mask size.
      d2d1: Implement D2D1CreateFactory().
      d2d1: Implement d2d_factory_CreateDxgiSurfaceRenderTarget().
      wined3d: Recognize the SM4 discard opcode.
      wined3d: Recognize the SM4 dp2 opcode.
      wined3d: Recognize the SM4 ishl opcode.
      ddraw/tests: 64-bit ddraw only has DWORD surface pitch alignment in some cases.
      ddraw: Clear DDSD_LINEARSIZE on uncompressed surfaces.
      ddraw: Clear DDSD_PITCH on compressed surfaces.
      ddraw: Use wined3d_surface_get_pitch() to calculate dwLinearSize for compressed surfaces.
      ddraw: Properly support creating compressed user memory surfaces.
      ddraw: Don't try to create surfaces for wined3d internal textures.
      wined3d: Add format information for WINED3DFMT_R8_UNORM.
      d3d10_1: Forward D3D10CreateEffectFromMemory to d3d10.
      d3d10core: Implement d3d10_device_GetDeviceRemovedReason().
      user32: Ensure at least one character is used in TEXT_WordBreak().

Huw D. M. Davies (6):
      dwrite/tests: U+1cc8 is not an assigned codepoint, use U+1cc7 instead. Fixes test on win 8.
      crypt32: Add a new element to SIP_ADD_NEWPROVIDER.
      crypt32/tests: Fix test failure on win 8.
      riched20: Don't skip the final carriage return in SFF_SELECTION mode.
      gdi32/tests: tmLastChar is solely governed by the last entry before 0xffff in the cmap.
      gdi32: CLIP_DFA_DISABLE should disable the font association mechanism.

Jacek Caban (20):
      urlmon: Fixed some occasionally failing tests.
      ieframe: Added InternetExplore::get_HWND implementation.
      oleaut32: Rewrite debugstr_vt.
      oleaut32: Use debugstr_variant for dump_Variant implementation.
      oleaut32: Replaced dump_Variant by debugstr_variant.
      mshtml: Call unlink from HTMLDOMNode::Release.
      mshtml: Added new helper for getting element attribute value and use it in script.c.
      mshtml: Added new helper for GetAttribute based getters and use it in IHTMLMetaElement implementation.
      mshtml: Use get_elem_attr_value helper in get_font_size.
      mshtml: Use get_elem_attr_value helper in is_elem_name.
      mshtml: Use get_elem_attr_value helper in check_event_attr.
      mshtml: Use get_elem_attr_value helper in HTMLFormElement_get_dispid.
      mshtml: Use elem_string_attr_getter helper in HTMLLabelElement_get_htmlFor implementation.
      mshtml: Use get_elem_attr_value helper in npplugin.c.
      mshtml: Added function object default value getter implementation.
      vbscript: Added support for exponential form of numeric literals.
      ntdll: Removed no longer used defines.
      jscript: Properly handle NULL pvarResult in ParseScriptText.
      vbscript: Always initialize is_array value (valgrind).
      jscript: Added accessing not existing property on IDispatchEx tests.

Julian Rüger (1):
      po: Update German translation.

Marcus Meissner (2):
      jsproxy: Avoid potential NULL dereference (Coverity).
      msxml3: Removed unused allocation (Coverity).

Michael Müller (2):
      server: Fix return value for FSCTL_PIPE_WAIT if pipe does not exist.
      ntdll: Stub TokenAppContainerSid in NtQueryInformationToken.

Michael Stefaniuc (28):
      dmusic: Return S_FALSE for the unimplemented IPersistStream_IsDirty().
      dmusic/tests: Test unimplemented IPersistStream methods in DMCollection.
      dmstyle/tests: Test some IPersistStream methods of DMStyle.
      dmscript: IPersistStream_GetClassID() is not implemented for DMScript.
      dmscript/tests: Test unimplemented IPersistStream methods in DMScript.
      dmband/tests: Test some IPersistStream methods of DMBand.
      dswave/tests: Test some IPersistStream methods of DirectSoundWave.
      dmcompos/tests: Test some IPersistStream methods of DMChordMap.
      dmscript: Move a struct definition to the .c file that uses it.
      dmloader/tests: Test some IPersistStream methods of DMContainer.
      dmime/tests: Test some IPersistStream methods of objects with DMObject.
      dmscript/tests: Test some IPersistStream methods of DMScriptTrack.
      dmusic: Simplify the creation of a DirectMusicBuffer object.
      dmusic: Don't leak memory on IReferenceClock creation failure.
      dmusic: Release the clock when destroying the IDirectMusic8 object.
      dmusic: Simplify the creation of a DirectMusic8 object.
      dmusic: Don't leak memory on DirectMusicInstrument creation failure.
      dmusic: Lock/unlock the module only on creation/destruction of the object.
      dmime/tests: Rather test for IDirectMusicObject as invalid iface.
      dmime: Move a struct definition to the .c file that uses it.
      dmband: Move struct definitions to the .c files that uses them.
      dmcompos: Move a struct definition to the .c file that uses it.
      dmstyle: Move a struct definition to the .c file that uses it.
      dmloader: COM cleanup for IDirectMusicContainer.
      dmusic: Move the common parts of DMObject to a generic implementation.
      dmusic: Use generic "unimplemented" methods for IPersistStream.
      dmusic: Get rid of the extra pointer to a DMUS_OBJECTDESC.
      dmusic: Remove the redundant "IDirectMusicCollection" from method names.

Nicolas Le Cam (2):
      mshtml/tests: Remove unused variable.
      winedbg: Remove unused variable.

Nikolay Sivov (29):
      scrrun/tests: Fix tests to depend on current codepage.
      scrrun: Implement Count() property for file collection.
      scrrun: Return disk space as VT_I4 if it fits.
      netprofm: Added IConnectionPointContainer stub for INetworkListManager.
      xmllite/writer: Implement OmitXmlDeclaration property.
      xmllite/writer: Implement ByteOrderMark property.
      scrrun: Return float type size when signed I4 limit exceeded.
      scrrun: Use existing helper to return file size.
      xmllite/writer: Initial implementation of WriteStartElement().
      xmllite/writer: Initial implementation of WriteElementString().
      propsys: Implement PSGetPropertySystem().
      propsys: Forward corresponding methods to exports.
      ntdll: Fix LdrLockLoaderLock()/LdrUnlockLoaderLock() on 64bit.
      include: Add more error codes.
      include: Added IImageList2 definition.
      shell32: Update to FolderItem2.
      wbemprox/tests: Fix some test failures on older XP versions.
      comctl32/progress: Set default marquee animation timer to 30 msec.
      comctl32/progress: Erase background too on WM_TIMER for marquee animation.
      comctl32/progress: Update position by one step on PBM_SETPOS in PBS_MARQUEE style.
      comctl32/treeview: Simplify sending parent WM_NOTIFY notifications.
      comctl32/treeview: Send TVN_KEYDOWN in response of WM_KEYDOWN.
      comctl32/imagelist: Update to IImageList2.
      explorerframe: Query for more notification callbacks.
      explorerframe/tests: Mark some results as broken.
      explorerframe: Internally make calls with interface wrappers.
      services: Defer service delete until all handles are closed.
      quartz/tests: Unregister filters only when registered successfully.
      shlwapi/tests: Skip if test ini file wasn't created.

Piotr Caban (17):
      vbscript: Parse doubles with bigger precision in parse_numeric_literal.
      msvcrt: Add _mbsnbcpy_s_l implementation.
      msvcrt: Add _mbscpy_s implementation.
      vbscript: Support multibyte characters in Global_Chr.
      msvcrt: Fix __libm_sse2_sqrt_precise implementation.
      msvcp100: Export basic_istream::gcount function.
      msvcrt: Rewrite qsort function.
      msvcrt: Add qsort_s tests.
      msvcrt: Add _wcslwr_s_l implementation.
      msvcrt: Return string in _wcslwr and _wcslwr_l.
      user32: Try to activate topmost activable window in WINPOS_ActivateOtherWindow.
      msvcp70: Export basic_string iterator functions.
      msvcrt: Handle negative file->_cnt value in fwrite.
      msvcp90: Fix typo in strstreambuf_freeze.
      msvcp70: Export operators working on basic_string.
      msvcrt: Add _strxfrm_l implementation.
      msvcrt: Add _wcsxfrm_l implementation.

Sebastian Lackner (1):
      ntdll/tests: Fix exception test failures on x86_64.

Shuai Meng (4):
      vbscript: Implemented CCur.
      vbscript: Implemented CDbl.
      vbscript: Implemented CLng.
      vbscript: Fixed CInt.

Stefan Dösinger (5):
      include: Sync an attribute to the Windows 8.1 SDK.
      wined3d: Remove d3dfmt_p8_init_palette.
      d3d9/tests: Add a test for D3DUSAGE_WRITEONLY.
      d3d8/tests: Add a test for D3DUSAGE_WRITEONLY.
      ddraw/tests: Test D3DVBCAPS_WRITEONLY.

Toshiaki Hirose (1):
      po: Update Japanese translation.

Vincent Povirk (8):
      user32/tests: Add test for SendMessage race condition.
      server: Clear the queue's QS_SMRESULT bit when sending a new message.
      ole32: Use a snapshot file when sharing storages for writing.
      ole32: Invalidate all caches when the transaction sig changes.
      shell32: Fix memory leak.
      ole32: Don't store file size in FileLockBytesImpl.
      ole32: Support storage files larger than 4 GB.
      notepad: Check IsDialogMessage before TranslateAccelerator.

Zhenbo Li (6):
      mshtml: Added IHTMLLocation::assign method implementation.
      mshtml: Added nsIDOMHTMLTableCellElement declaration.
      mshtml: Added IHTMLTableRow::deleteCell method implementation.
      mshtml: Added IHTMLLinkElement::media property.
      mshtml: Added IHTMLDocument2:toString method.
      mshtml: Added IHTMLTableRow::insertCell method implementation.

--
Alexandre Julliard
julliard@winehq.org
