The Wine development release 1.5.18 is now available.

What's new in this release (see below for details):
  - Various Windows Codecs improvements.
  - Fixes for OLE database support.
  - Improvements to system parameters management.
  - Some fixes to the built-in Web browser.
  - Fixes for XML support.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.18.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.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.5.18 (total 46):

  16238  Star Wars: The Battle of Endor: Crashes while starting.
  17264  The SunSpider JavaScript benchmarks does not show the Results
  20320  Mouse don't runs in Medal of Honor Airborne
  21047  cmd does not handle FOR /F %%a in ('command') properly
  21060  MCI open+play .avi hangs
  21394  nul: nul doesn't not work for copy.
  23331  Medal of Honor Airborne: Install recognizes it as "ProductName"
  23712  Rollercoaster tycoon not working
  23880  d3dx9/asm tests crashes in a real windows vista box
  24942  Fable: The Lost Chapters rendered scenes mostly black without native d3dx9_36
  28832  ddraw/tests/d3d.ok fails sometimes under valgrind with "Expected message 0x7e, but didn't receive it."
  28834  setupapi/tests/devinst.ok fails on some machines under Valgrind
  29676  .NET 4.0 runtime fails to initialize MediaSystem subsystem due to rpcrt4.dll RpcMgmtIsServerListening being a stub
  29749  Download Accelerator Plus: hangs on start without native ie7
  29853  QQ2011 does not display Chinese correctly with builtin usp10 if font link setting is incomplete
  30066  Format Factory crashes in Video Options
  30092  ePSXe crash while reset game
  30251  Word 2010 does not display reference styles with builtin msxml6
  30270  Wine doesn't detect opengl/wgl extensions anymore
  31108  Microshop 2.0 (.NET 2.0 app using System.Windows.Forms.WebBrowser) wants IWebBrowser2::Refresh
  31646  Popcap wrapper does not work through proxy
  31735  Circuitmaker 2000 schematic editor: some parts are wrongly displayed
  31738  Material Brave hangs on starting
  31774  Font smoothing does not work in spite of registry settings
  31841  Uru does not properly start anymore in full-screen mode
  31979  Lord of the Rings Online crashes at startup
  31993  Netflix on Firefox hangs with loading bar at 100%
  32040  The Witcher - Graphical glitches with ARB shader backend
  32044  Simon the Sorcerer 3D crashes on start with built-in msvcp60
  32047  HeidiSQL 7 crashes in 1.5.15
  32051  dhpoware's OpenGL 3 demos do not display
  32082  CCleaner 3.x installer crashes at the same point (not fully reproducible)
  32085  Elven Legacy needs msvcp80.dll.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBDI@Z (purist)
  32087  External environment variables interfere with cmd runtest, causing it to issue false errors
  32101  SSF Saturn Emulator - Crashes with SendMessage() error
  32134  KwSing installer needs wmvcore.dll.DllRegisterServer
  32187  Image Composite Editor fails to install with a VSDCA_VsdLaunchConditions msi error
  32198  ListView fails to redraw after Insert
  32199  Installer of Creo 2.0 Parametric Free Trial needs msvcp100.dll.wctrans
  32200  Installer of Creo 2.0 Parametric Free Trial crashes
  32209  fixme:gdiplus:GdipSetPathGradientBlend not implemented gives Exception
  32242  Silverlight 4.x can no longer install
  32256  PowerPoint 2010 crashes in slideshow mode
  32262  System.TypeInitializationException when starting 'Adventures of Shuggy'
  32263  AtlModuleExtractCreateWndData and AtlModuleAddCreateWndData not found, needed by QQ2011
  32264  Jammer 6 demo installer: can't click on window

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

Changes since 1.5.17:

Akihiro Sagawa (3):
      winmm/tests: Add more mmioSeek tests.
      winmm: Fix SEEK_END direction of mmio files without buffering.
      winmm/tests: Add EOF and buffer pointer tests for mmio.

Alexandre Julliard (32):
      user32: Add helper functions to get and set dword registry values in SystemParametersInfo.
      user32: Add structures to describe individual system parameters to reduce code duplication.
      user32: Implement a number of missing system parameters.
      user32: Add some defines to reduce Unicode string duplication.
      user32: Add system parameter descriptors for user preference parameters.
      user32: Support more user preference system parameters.
      user32: Add helper functions for loading and saving system parameter registry entries.
      user32: Properly set last error in MapWindowPoints.
      user32: Add some error checking in ScreenToClient and ClientToScreen.
      gdi32: Don't load bitmap glyphs when using subpixel rendering in GetGlyphOutline.
      user32: Use the default GUI font for unspecified font parameters.
      user32: Use parameter entry objects for the non-client metrics parameters.
      user32: Add parameter entry objects for the desktop wallpaper and pattern.
      user32: Simplify initialization of the desktop wallpaper.
      user32: Check the length of the loaded registry key for system parameters.
      user32: Forward SystemParametersInfo calls to the user driver first.
      winex11: Move the screen saver support to a new SystemParametersInfo entry point.
      user32: Define a global list of parameter registry keys and store an index in the value string.
      user32: Maintain a cache of registry keys for the various parameters.
      user32: Initialize some system parameters in the registry on first run.
      gdi32: Fix coordinate mapping of arc limits.
      user32: Reimplement system color handling using standard system parameter entries.
      odbc32: Fix some data types for 64-bit.
      comctl32/pager: Use DrawFrameControl to paint the buttons.
      comctl32/pager: Fix tracking of mouse position inside the buttons.
      comctl32/pager: Don't rely on PGN_CALCSIZE to set the non-scrollable dimension of the control.
      comctl32/tests: Add some initial pager tests.
      user32: Make sure the scroll button arrows are really at least 3 pixels.
      user32: Don't check for driver events before normal messages in GetMessage.
      user32: Don't check for driver events before normal messages in PeekMessage.
      user32: Fix the wait event mask in PeekMessage.
      widl: Print large enum constants in hex.

Andrew Talbot (17):
      mscoree: Remove unneeded address-of operator from function name.
      crypt32: Remove unused variables.
      hhctrl.ocx: Remove unused variable.
      ddraw: Remove unused variable.
      d3d10core: Remove unused variables.
      d3d8: Remove unused variable.
      cryptui: Remove unused variable.
      shell32: Remove unused variable.
      quartz: Remove unused variables.
      msxml3: Remove unused variable.
      msi: Remove unused variables.
      kernel32: Remove unused variables.
      winspool.drv: Remove unused variable.
      wininet: Remove unused variable.
      winhttp: Remove unused variables.
      dnsapi: Remove unused variable.
      cryptdll: Remove unused variable.

André Hentschel (9):
      oleaut32: Fix remaining memory leak (coverity).
      msxml3: Fix remaining memory leak (coverity).
      dmsynth: Fix compilation on systems that don't support nameless structs or unions.
      advpack: Fix possible NULL pointer access in heap_strdupWtoA.
      dwrite: Fix possible NULL pointer access in heap_strdup*.
      jscript: Fix possible NULL pointer access in heap_strdupW.
      mshtml: Fix possible NULL pointer access in heap_str*.
      msxml3: Fix possible NULL pointer access in heap_strdupW.
      urlmon: Fix possible NULL pointer access in heap_strdup*.

Aric Stewart (3):
      wineqtdecoder: Properly clean up splitter and loader threads on QTSplitter destruction.
      imm32: Use SendMessage not PostMessage for the default IME winproc.
      imm32/tests: Test showing that communication to the IME window is done via SendMessage.

Austin English (2):
      secur32: Get rid of deprecated types.
      include: Remove stray linefeeds.

Christian Costa (12):
      d3drm: Implement texture SetAppData and GetAppData.
      user32: Add tests for MapWindowPoints, ClientToScreen and ScreenToClient.
      wmvcore: Add stub for DllRegisterServer.
      winegstreamer: Remove left over FIXME.
      winegstreamer: Turn some FIXME into TRACE.
      strmbase: Use FreeMediaType instead of freeing media type by hand and forgetting pUnk release.
      strmbase: Don't forget to add ref pUnk in CopyMediaType when pbFormat is null.
      strmbase: Display new ref in AddRef and Release for IEnumMediaTypes.
      strmbase: Display iface in TRACEs.
      strmbase: Simplify IEnumMediaTypesImpl_QueryInterface and turn FIXME into WARN.
      amstream: Initialize correctly AM_MEDIA_TYPE struct.
      cabinet: Simplify concatenation of path and filename.

Christian Inci (1):
      wined3d: Add support for nVidia GT 640M.

Daniel Jelinski (2):
      comctl32: Move WM_SIZE handling into WM_WINDOWPOSCHANGED.
      xolehlp: Add some stubs.

Detlef Riekenberg (8):
      advapi32/tests: Fix a failure on 64bit NT 5.x.
      advapi32: Allow string alias for common RID in sid strings.
      advapi32/tests: Test string alias for common RID in sid strings.
      netapi32/tests: Fix an access test failure on XP.
      kernel32/tests: Fix 32-bit thread test failures on NT 5.x 64bit.
      netapi32/tests: Fix workstation test failures on XP.
      ktmw32: Add a stub for CreateTransaction.
      ktmw32: Add a stub for CommitTransaction.

Dmitry Timoshkov (11):
      fonts: Update 10-pixel cyrillic bitmaps for Tahoma.
      fonts: Update 10-pixel and some rarely used 9-pixel cyrillic bitmaps for Tahoma Bold.
      gdiplus: Avoid more cases of allocating a transformation matrix on the heap.
      windowscodecs: Add NULL pointer checks to some color context methods.
      windowscodecs: Test QueryCapability of the TIFF decoder.
      windowscodecs: Make GetFrameCount in the TIFF decoder not fail without an image stream.
      windowscodecs: Implement QueryCapability in the TIFF decoder.
      windowscodecs: Reimplement GetFrameCount of the GIF decoder.
      windowscodecs: Implement QueryCapability in the GIF decoder.
      windowscodecs: Add a test to show that QueryCapability initializes the decoder.
      windowscodecs: Make GetFrame return WINCODEC_ERR_FRAMEMISSING without an image data.

Erich Hoover (2):
      advapi32: Implement SetSecurityInfo on top of NtSetSecurityObject.
      wininet: Fix InternetCrackUrl parsing URLs containing a semicolon.

Francois Gouget (4):
      shell32: Fix a buffer overflow in CommandLineToArgvW().
      msvcp60: Make some codecvt_xxx() functions static or remove them.
      winegstreamer: Make the GST_QualityControl methods static.
      server: Print the usage to stdout when invoked with --help.

Frédéric Delanoy (4):
      ole32: Avoid erroneously freeing a variable in ReadFmtUserTypeStg.
      msi: Fix leaks in stop_service_dependents (coverity).
      msi: Fix leaks in ITERATE_InstallService (coverity).
      msi: Fix a couple of leaks (coverity).

Hans Leidekker (17):
      msvcr100: Add a version resource.
      rpcrt4: Implement RpcMgmtIsServerListening.
      mscms: Handle more bitmap formats.
      windowscodecs: Implement IWICBitmapDecoderInfo::GetFileExtensions.
      windowscodecs: Implement WICCreateColorContext_Proxy.
      windowscodecs: Add a stub IWICColorContext implementation.
      windowscodecs: Implement IWICBitmapFrameDecode::GetColorContexts for PNG images.
      windowscodecs: Implement IWICColorContext::GetType.
      windowscodecs: Implement IWICColorContext::InitializeFromMemory.
      windowscodecs: Implement IWICColorContext::InitializeFromExifColorSpace.
      windowscodecs: Implement IWICColorContext::GetExifColorSpace.
      windowscodecs: Implement IWICColorContext::GetProfileBytes.
      windowscodecs: Add tests for IWICColorContext.
      windowscodecs: GetThumbnail should be supported for ICO frames.
      advapi32: Avoid a buffer overflow in CredUnmarshalCredentialW.
      msi: Don't set the REINSTALL property if the product will be patched.
      ole32/tests: Add a test to show that CoGetPSClsid is not affected by an override of HKEY_CLASSES_ROOT.

Henri Verbeet (50):
      ddraw: Avoid LPDIRECT3DTEXTURE.
      ddraw: Avoid LPDIRECT3DMATERIAL3.
      ddraw: Avoid LPDIRECT3DMATERIAL2.
      wined3d: Add support for GLSL based fixed function fragment shaders.
      wined3d: Handle relative addresses in the common code in shader_glsl_get_register_name().
      ddraw: Avoid LPDIRECT3DMATERIAL.
      ddraw: Avoid LPDIRECT3DVIEWPORT3.
      ddraw: Avoid LPDIRECT3DVIEWPORT2.
      d3d10core: Implement d3d10_device_VSGetShader().
      d3d10core: Implement d3d10_device_PSGetShader().
      ddraw: Avoid LPDIRECT3DVIEWPORT.
      ddraw: Avoid LPDIRECT3DDEVICE7.
      ddraw: Avoid LPDIRECT3DDEVICE3.
      d3d10core: Implement d3d10_device_GSSetShader().
      d3d10core: Implement d3d10_device_GSGetShader().
      ddraw: Avoid LPDIRECT3DDEVICE2.
      ddraw: Avoid LPDIRECT3DDEVICE.
      ddraw: Avoid LPDIRECT3DLIGHT.
      wined3d: Add support for geometry shaders to the GLSL shader backend.
      d3d10core: Fix the stream index in d3d10_device_IASetVertexBuffers().
      ddraw: Avoid LPDIRECT3D7.
      ddraw: Avoid LPDIRECT3D3.
      wined3d: Make state_geometry_shader() static.
      d3d8/tests: Also test that render states get reset in test_reset().
      d3d9/tests: Also test that render states get reset in test_reset().
      ddraw: Avoid LPDIRECT3D2.
      ddraw: Avoid LPDIRECT3D.
      wined3d: Update the scissor rect and viewport even on redundant wined3d_device_set_render_target() calls.
      d3d8/tests: Add a test for the viewport after SetRenderTarget() calls.
      d3d9/tests: Add a test for the scissor rect and viewport after SetRenderTarget() calls.
      d3drm: Avoid LPDIRECTDRAWSURFACE.
      d3drm: Avoid LPDIRECTDRAWCLIPPER.
      d3d9: Avoid resetting device state for d3d9ex resets.
      d3d9/tests: Create the d3d9ex object in create_device().
      d3d9/tests: Add tests for device resets in d3d9ex.
      d3drm: Avoid LPDIRECT3DVIEWPORT.
      d3drm: Avoid LPDIRECT3DDEVICE2.
      d3drm: Avoid LPDIRECT3DDEVICE.
      d3d10core: Implement d3d10_device_IAGetIndexBuffer().
      d3d10core: Implement d3d10_device_IAGetVertexBuffers().
      d3dx9: Avoid LPD3DXFILEDATA.
      d3dx9: Avoid LPD3DXFILEENUMOBJECT.
      d3dx9: Avoid LPD3DXFILESAVEDATA.
      d3d10core: Implement d3d10_device_RSSetScissorRects().
      d3d10core: Implement d3d10_device_RSGetScissorRects().
      d3dx9: Avoid LPD3DXFILESAVEOBJECT.
      d3dx9: Avoid LPD3DXFILE.
      d3dx9: Avoid LPD3DXCONSTANTTABLE.
      d3d10core: Implement d3d10_device_SOSetTargets().
      d3d10core: Implement d3d10_device_SOGetTargets().

Huw Davies (1):
      winspool: Pre-1.6 versions of CUPS can leave behind a file when cupsGetPDD3 fails, so clear up afterwards.

Hwang YunSong (1):
      po: Update Korean translation.

Jacek Caban (41):
      mshtml: Properly report history update for location.replace call.
      mshtml: Don't skip history notification for about: URLs.
      mshtml: Added IPersistHistory tests.
      mshtml: Store embedder's IOleComandTarget iface in HTMLDocumentObj and use it in handle_navigation_error.
      mshtml: Added exec_refresh implementation.
      mshtml: Added refresh tests.
      ieframe: Forward more DocHost::Exec calls to embedders.
      ieframe: Added IWebBrowser2::Refresh implementation.
      ieframe: Added IWebBrowser2::Refresh tests.
      mshtml: Added IHTMLScriptElement::get_text implementation.
      jscript: Use proper object as 'this' when function is called on an activation object.
      atl: Properly fail on an aggregation attempt.
      cmd: Make allocation unfailable.
      cmd: Added HeapFree wrapper.
      wininet: Store both proxy and destination host in http_request_t.
      wininet: Fixed HTTP CONNECT secure connection.
      amvideo.idl: Use proper IDirectDraw forward declaration.
      wininet: Store an info if connection is HTTPS in server_t.
      wininet: Allow passing INTERNET_INVALID_PORT_NUMBER port to get_server.
      wininet: Store more useful strings in server_t.
      wininet: Use processed string from server_t for constructing proxy path.
      wininet: Use proxy settings directly from http_request_t in a few more places.
      mshtml: Use stdint.h type names in nsiface.idl.
      atl100: Addeed stub DLL.
      atl: Always return S_FALSE in DllCanUnloadNow.
      atl: Removed unneeded includes.
      atl: Moved atlbase.h to public includes.
      atl100: Moved IRegistrar implementation to atl100.
      atl: Moved atlwin.h to public includes.
      atl100: Moved more function implementations to atl100.
      atl: Added AtlGetVersion implementation.
      atl80: Forward calls directly to atl100 when possible.
      winecrt0: Use atl100.dll directly to create a registrar instance.
      mshtml: Use ATTR_FIX_PX in IHTMLStyle2::put_bottom implementation.
      mshtml: Fixed leak in fill_props.
      mshtml: Always use UTF-8 encoding in nsWineURL.
      mshtml: Added nsIURI::GetOriginCharset implementation.
      atl: Don't forward AtlModule* calls to atl100.dll.
      advapi32: Added debug trace to RegOverridePredefKey.
      wininet: Don't take INTERNET_BUFFERSW as argument in object's ReadFileEx entry.
      wininet: Use generic ReadFileEx entry in InternetReadFileExA and get rid of ReadFileExA entry.

Jason Edmeades (3):
      cmd: Add support for tokens= (for /f).
      cmd: Prevent external env vars causing tests to fail.
      cmd: Add support for NUL in copy.

Jörg Höhle (1):
      mciavi: Fix player deadlock when starting to play.

Maarten Lankhorst (1):
      dsound: Create a primary_pwfx separately from pwfx.

Marcus Meissner (1):
      wininet: Move freeing netconn into create_netconn_socket (Coverity).

Michael Stefaniuc (20):
      user.exe16: Use FIELD_OFFSET to calculate the size of a struct with variable length array.
      msiexec: Use FIELD_OFFSET to calculate the size of a struct with variable length array.
      msi: Don't over-allocate memory for a MSISELECTVIEW.
      oleaut32: Remove a superfluous TRUE:FALSE conditional expression.
      msvcp100: Avoid FALSE:TRUE conditional expressions.
      ws2_32: Avoid using sizeof on structs with variable length array.
      krnl386.exe16: Use FIELD_OFFSET for the size of structs with varlength arrays.
      msvcp: Don't cast zero.
      kernel32/tests: Don't cast zero.
      user32: Remove two superfluous casts.
      appwiz: Use the correct types for callbacks.
      wintab32/tests: Remove a function pointer cast.
      shell32: Use the proper type for a function pointer field.
      comdlg32/tests: Fix the prototype of callback functions.
      dpnhpast: "Fix" DllCanUnloadNow() implementation.
      hlink: "Fix" DllCanUnloadNow() implementation.
      msisys.ocx: "Fix" DllCanUnloadNow() implementation.
      olepro32: "Fix" DllCanUnloadNow() implementation.
      pstorec: "Fix" DllCanUnloadNow() implementation.
      qedit: "Fix" DllCanUnloadNow() implementation.

Nikolay Sivov (29):
      comcat: Cleanup from unused includes and imports.
      msxml3: Add VT_INT to VARIANT tracing helper.
      msxml3: Fix a redundant newline in transformation result in html mode.
      msxml3: Disable text data escaping for format nodes set with put_data().
      scrrun: Use heap helpers for dictionary.
      scrrun: Improve OpenTextFile stub.
      scrrun: Block stream reading calls if it's not in ForReading mode.
      msi: Cache ITypeInfo instances for automation objects instead of reloading every time.
      msi: Store object function pointers with type id.
      msi: COM cleanup for IActiveScriptSite.
      msi: Make it clear where script type mask comes from.
      msi: Remove unnecessary casts and argument from script site creation helper.
      msxml3: Store handler pointers so casts to particular type are avoided.
      msxml3: Stub support for external entity resolver.
      xmllite: Support application defined IMalloc for reader.
      xmllite: Use application defined IMalloc for reader input.
      xmllite: Add stub for reader input buffer.
      xmllite: Keep stream reference in reader input instead of reader itself.
      xmllite: Store reader input impl pointer in reader structure.
      msxml3: Make it clear when encoded buffer is created.
      msxml3: AddRef() typeinfo pointers only when we have to.
      xmllite: Initial support for reader input encoding detection.
      xmllite: Implement GetNodeType() for reader.
      xmllite: Store remaining reader input parameters.
      odbc32: Implement SQLDataSourcesA() forward.
      oledb32: Implement IDataInitialize::CreateDBInstance.
      oledb32: Implement IDataInitialize::GetInitializationString.
      msxml3: Properly update node to doc link when cloning.
      include: Added error codes enum, cleanup existing enums.

Nozomi Kodama (2):
      d3dx9_36: Implement handy computations for small orders in D3DXSHRotate.
      d3dx9_36: Fix the case out = in for D3DXSHRotate.

Piotr Caban (26):
      msvcp90: Free memory allocated by _get_current_locale function.
      msvcp90: Fixed a memory leak in virtual destructor tests.
      gdi32: Ignore contours containing one point in get_glyph_outline function.
      gdi32: Added GetGlyphOutlineW tests on glyph that contains empty contour.
      msvcp90: Fixed basic_istream_char_read_uint64 tests.
      msvcp60: Fixed basic_filebuf<char> implementation.
      msvcp60: Fixed basic_filebuf<short> implementation.
      msvcp60: Fixed basic_string::c_str implementation.
      msvcp60: Added basic_string tests.
      msvcp60: Remove mutex class.
      msvcp60: Fixed num_get class implementataion.
      msvcp60: Fixed num_put::fput implementation.
      msvcp60: Fixed basic_istream::ipfx implementation.
      msvcp60: Fixed basic_istream::seekg implementation.
      msvcp60: Fixed basic_istream::getline(basic_string) implementation.
      msvcp60: Added iostream tests.
      urlmon: Update reference counter in bsc_from_bctx.
      msvcp80: Forward functions that are using String_iterators to msvcp90.
      msvcp90: Added wctrans and towctrans implementation.
      msvcp90: Added wctrans and towctrans tests.
      msvcp: Sync implementations.
      msvcp60: Added basic_stringbuf::_Mode implementation.
      msvcp60: Export basic_ostream constructors.
      msvcp60: Fixed handling of empty strings.
      msvcp60: Fixed basic_string::_Tidy implementation.
      msvcp60: Fixed basic_string::_Copy implementation.

Qian Hong (2):
      usp10: Fixed wgBlank, wgDefault, wgInvalid and wgKashida.
      usp10/tests: Added tests for wgBlank, wgDefault, wgInvalid and wgKashida.

--
Alexandre Julliard
julliard@winehq.org
