The Wine development release 1.1.18 is now available.

What's new in this release (see below for details):
  - RPC over HTTP support.
  - Improved support for upgrades in MSI.
  - Debug symbols in WineDbg on Mac OS X.
  - Many Direct3D code cleanups.
  - Various bug fixes.

The source is available from the following locations:

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

   2366  Wine unable to initiallize on NetBSD
   4145  Redraw problem in "The Journal"
   8072  Media Player Classic segfaults
  11507  nwn2 dm toolkit missing graphical elements
  11856  Any application: keyboard focus lost after a popup is unmapped, if SCIM is enabled
  12225  EVE Premium, graphics glitches: some effects missing.
  12723  LEGO Island Xtreme Stunts: always wants to install DirectX8.1
  13308  comctrl32 listview toggles election while scrolling with ctrl key
  13469  cmd can't handle long input (buffer overflow)
  14014  T-Online Browser: Crash on unimplemented Functions (gdiplus.dll)
  14080  Red Faction: sound does not work
  14139  Governor of poker crashes
  14185  Wine 1.0 networking issues - /proc/net/route doesn't exit on Solaris hosts.
  14293  winhelp: Vertical scroll bar is missing in some cases
  14624  Metal Fatigue: crashes before game start
  14703  Null character comparison problem in vb6 application
  14711  'Type' command in cmd.exe does not line feed in the end of a file
  15356  Textures are not displayed in Final Fantasy XI with an ATI card
  15411  Dragon NaturallySpeaking 10 takes a very long time to finish loading
  15717  Far Cry 2 quits when OffscreenRenderingMode=fbo
  16130  Runes of Magic client doesn't communicate with the server
  16394  No sound in ever17 without native msacm32.dll
  16570  FineReader 7 Pro: won't save to multiple files.
  16941  interrupts cause nested trace output
  17183  Not showing any text in one of the textboxes
  17499  Sun JRE 1.6.0_12 installer crashes
  17683  ExpressPCB: does not properly print circuit board traces
  17705  Audiosurf: crashes at startup
  17759  CommandLineToArgvW bug with empty lpCmdLine
  17822  Logic Friday: crashes when entering equation
  17843  Rubbish entries in registry on clean .wine
  17854  build broken in rpcrt4 on OpenSolaris

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

Changes since 1.1.17:

Alexander Morozov (1):
      hal: Fix KfRaiseIrql declaration.

Alexandre Julliard (24):
      loader: Fix installation for platforms that don't use extra binaries.
      ctl3d32: Make ctl3d.dll and ctl3dv2.dll into stand-alone 16-bit modules.
      imm32: Make imm.dll into a stand-alone 16-bit module.
      wintab32: Make wintab.dll into a stand-alone 16-bit module.
      wnaspi32: Make winaspi.dll into a stand-alone 16-bit module.
      twain_32: Make twain.dll into a stand-alone 16-bit module.
      rasapi32: Make rasapi16.dll into a stand-alone 16-bit module.
      winmm: Make sound.drv into a stand-alone 16-bit module.
      winnls32: Make winnls.dll into a stand-alone 16-bit module.
      w32skrnl: Make win32s16.dll into a stand-alone 16-bit module.
      w32skrnl: Make w32sys.dll into a stand-alone 16-bit module.
      winebuild: Make sure main module is properly initialized.
      configure: Always set LDPATH, rpath support is broken on many platforms.
      wineps.drv: Set the line join and cap styles based on the selected pen.
      avifil32: Make avifile.dll into a stand-alone 16-bit module.
      wininet/tests: Fix the http tests for the new winehq.org behavior.
      winebuild: Skip non-functions when building the undefined exports file.
      kernel32: Revert incorrect part of commit 7c3529f1cc6a3ce6f0a403c337926c8fc9fbfc57.
      wininet/tests: Fix another instance of changed behavior on winehq.org.
      configure: socketpair needs -lsocket on Solaris.
      ntdll: Get rid of the no longer used pthread emulation.
      include: Get rid of the definitions for the pthread emulation.
      msi/tests: Avoid size_t in traces.
      rpcrt4: Disable HTTP support if we don't have socketpair and related networking functions.

Anders Jonsson (1):
      wordpad: Update Swedish translation.

Andrew Nguyen (5):
      tapi32: Stub lineGetDevCapsW.
      tapi32: Stub lineMakeCallW.
      tapi32: Stub lineGetIDW.
      wine.inf: Add entry for fake ddeml.dll.
      ddraw/tests: Skip some cooperative level tests on NT4/Win95.

Andrew Talbot (7):
      shell32: Remove uninitialized and superfluous struct.
      winex11.drv: Remove order-of-evaluation dependencies.
      wineps.drv: Remove order-of-evaluation dependencies.
      ntdll: Remove superfluous semicolon.
      winedos: Initializations fix.
      advapi32: Constify some variables.
      advapi32: Constify some variables.

Aric Stewart (10):
      kernel32: Report unixfs instead of ntfs for unknown filesystem type.
      propsys: Stub for PSUnregisterPropertySchema.
      msi: Reorder the condition operators so that longer strings are matched first.
      msctf: ThreadMgr sink framework.
      msctf: Define ITfTextInputProcessor. Implemented by the Text Services.
      msctf: Add ITfThreadMgrEventSink to ThreadMgr.
      msctf: Hook up the DocumentMgr to be able to forward ITfThreadMgrEventSink events to sinks advised to the ThreadMgr.
      msi: Verify the existence of fusion.dll before reporting the .Net version.
      advapi32: Stub TreeResetNamedSecurityInfo for the IE8 installer.
      msctf: Implement ThreadMgr ITfSource::UnadviseSink.

Aurimas Fischer (5):
      mshtml: Update Lithuanian translation.
      uninstaller: Add Lithuanian translation.
      reg: Add Lithuanian translation.
      start: Add Lithuanian translation.
      wineboot: Add Lithuanian translation.

Austin English (3):
      winegcc: Fix a compiler warning on PC-BSD.
      twain32: Fix a compiler warning on PC-BSD.
      rpcrt4/test: Change a skip to win_skip.

Christian Costa (3):
      d3dxof: Remove limitation on data buffer size.
      amstream: Implement IAMMultiMediaStreamImpl_GetFilterGraph.
      kernel32: Add stub for GetSystemTimes.

Dylan Smith (3):
      richedit: Add bounds checks for EM_GETTEXTRANGE with tests.
      winhlp32: Invalidate scrollbar when changing pages.
      richedit: Properly handle lack of semicolon after font name in rtf.

Francois Gouget (1):
      wineesd.drv: Remove esd_host as it is unused.

Hans Leidekker (13):
      msi: Add stub implementations of MsiDeterminePatchSequenceA/W.
      msi: Implement MsiReinstallProductA/W.
      msi: Add stub implementations of MsiSourceListClearAllExA/W.
      msi: Don't initialize COM for custom action threads.
      msi: Only apply a transform when its language id matches the system language id.
      winspool: Support special environment value "all" in EnumPrinterDrivers.
      msi: Add some tests for MsiQueryFeatureState.
      msi: Detect privately installed assemblies.
      msvcrt: Implement _vscprintf and _vscwprintf.
      msvcrt: Add tests for _vscprintf and _vscwprintf.
      msi: Enumerate products from all contexts.
      msi: Add tests for MsiEnumProducts.
      msi: Allocate token information buffer dynamically.

Henri Verbeet (50):
      wined3d: Unload resources on Uninit3D().
      wined3d: Compare the actual formats.
      wined3d: Set the currently active context to NULL when it's destroyed.
      d3d9: Get rid of basetexture.c.
      d3d9: Get rid of resource.c.
      d3d9: Fix locking.
      d3d8: Get rid of basetexture.c.
      d3d8: Get rid of resource.c.
      d3d8: Fix locking.
      d3d10core: Only destroy the device when it doesn't have any references left.
      wined3d: Try to make Coverity shut up (CID 863, 905).
      d3d8: Properly handle unsetting the pixelshader in SetPixelShader().
      d3d8: Cleanup the pixelshader handling code a bit.
      d3d8: Cleanup the vertexshader handling code a bit.
      wined3d: Set the byte count for WINED3DFMT_UNKNOWN to 0.
      wined3d: Remove the bytesPerPixel field from IWineD3DSurfaceImpl and IWineD3DVolumeImpl.
      wined3d: Pass format_desc to the Check*Capability() function.
      wined3d: Pass format_desc to getColorBits() and getDepthStencilBits().
      wined3d: Pass format_desc to set_shader().
      shdocvw: Add a stub ITaskbarList implementation.
      wined3d: Print a warning when the stage isn't mapped to a valid texture unit in tex_coordindex().
      wined3d: Fix the indentation in tex_coordindex().
      wined3d: Print a FIXME in tex_coordindex() when NV_TEXGEN_REFLECTION isn't supported.
      wined3d: Reduce the number of checkGLcall's in tex_coordindex() a bit.
      wined3d: Implement WINED3DTSS_TCI_SPHEREMAP.
      wined3d: Make the texunit field in struct stb_const_desc unsigned.
      wined3d: Fix a few sign compare warnings.
      wined3d: Add a more convenient way to check if a surface is on a swapchain.
      wined3d: Don't use rtInternal for surfaces that are on a swapchain.
      wined3d: Do the ffp_valid check before even trying to use the element.
      d3d8: Fix some indentation.
      d3d9: Fix some indentation.
      d3d9: Properly initialize the viewport dimensions.
      d3d9: Don't depend on specific display modes in test_reset().
      wined3d: Remove unused attributes from WineDirect3DVertexStridedData.
      wined3d: Simplify remove_vbos().
      wined3d: Simplify IWineD3DDeviceImpl_ProcessVertices().
      wined3d: Simplify the "transformed" check in state_lighting().
      wined3d: Pass the number of components to glVertexBlendARB().
      wined3d: Create a separate function for setting basic format info.
      wined3d: Create a separate function for checking a format's FBO compatibility.
      wined3d: Create a separate function for setting format fixups.
      wined3d: Create a separate function for setting a format's GL texture info.
      wined3d: Make sure the format actually exists in init_format_texture_info().
      wined3d: Use separate structures for ddraw style strided data and wined3d's internal stream info.
      wined3d: Remove IWineD3DVertexDeclarationImpl_GetDeclaration().
      wined3d: Remove IWineD3DVertexDeclaration_SetDeclaration() from the public interface.
      wined3d: Separate the internal representation of vertex declaration elements from the struct used to create it.
      wined3d: Don't create an END element for wined3d vertex declarations.
      wined3d: Unify vertex and texture formats.

Huw Davies (14):
      ole32: Remove unused static variable.
      ole32: Don't allocate the ole clipboard object in global memory - we're not going to directly expose it to other processes.
      ole32: Add a helper function to retrieve the implementation ptr.
      ole32: Rearrange functions to eliminate forward declarations.
      ole32: pFmt isn't exposed to the client, so simplify its allocation.
      ole32: Simplify QueryInterface.
      ole32: Use IsEqualIID rather than memcmp.
      ole32: Register DataObject clipboard format.
      ole32: Store the ole clipboard window's HWND in the DataObject clipboard format.
      ole32: Move the code to set the clipboard formats to a separate function.
      ole32/tests: Tests for the 'Ole Private Data' clipboard format.
      rpcrt4: Dynamically allocate the buffer if the fixed size one isn't large enough. Don't return an inappropriate error if we fail to get the status text, it's only used for diagnostics.
      ole32: OleFlushClipboard shouldn't call EmptyClipboard.
      ole32: Set the 'Ole Private Data' clipboard format.

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

Jacek Caban (4):
      urlmon: Code clean up.
      urlmon: Return IAsyncMoniker from QueryInterface.
      urlmon: Added StdURLMoniker implementation.
      urlmon: Fixed handling NULL URLName in GetDisplatName implementation.

James Hawkins (15):
      msi: Fix a typo (Coverity 910).
      msi: Enumerate the current user's patches if szUserSid is NULL.
      msi: Allow the enumeration of other users' patches.
      msi: Factor out the MsiEnumPatchesEx tests and test the NULL szUserSid and an szUserSid that is different from the current user.
      msi: Test and handle the case where the SourceList key does not exist and the PackageName value does not exist in MsiGetProductInfo.
      msi: MsiCollectUserInfo cannot be called from a custom action (Coverity 565, 566).
      msi: Don't try to release a NULL record, with tests (Coverity 536).
      msi: Handle a NULL and empty szPackagePath in MsiInstallProduct (Coverity 181).
      twain_32: Fix the use of an uninitialized variable (Coverity 908).
      cmd: Fix a memory leak (Coverity 904).
      winebuild: Document the correlation of spec->ordinals and spec->limit with an assertion (Coverity 902).
      kernel32: Add tests for WritePrivateProfileString.
      kernel32: Set last error to ERROR_FILE_NOT_FOUND if lpAppName is NULL.
      kernel32: Handle writing empty sections and keys in WritePrivateProfileString.
      kernel32: Don't try to load an empty initialization file.

Kai Blin (1):
      quartz/tests: If CoCreateInstance() fails, it's safe to return, as no cleanup is needed.

Ken Thomases (4):
      dbghelp: Add support for debugging Mach-O modules.
      dbghelp: Recognize .dylib files as Mach-O modules.
      dbghelp/stabs: For Mach-O, line numbers use absolute address, not offset.
      dbghelp: Include Mach-O modules in minidumps.

Kirill K. Smirnov (1):
      mciavi32: Fix typo.

Konstantin Kondratyuk (2):
      fonts: Add Bielorussian and Ukrainian symbols to tahomabd.
      fonts: Add Bielorussian and Ukrainian symbols to tahoma.

Kusanagi Kouichi (1):
      winex11.drv: Make import/export functions static.

Lei Zhang (1):
      oleaut32: Fix some corner cases in VarBstrCmp.

Michael Stefaniuc (24):
      mshtml: Update the Romanian translation.
      mshtml: Convert the German translation to UTF8.
      mshtml: Update the German translation.
      reg: Change the German translation to UTF8.
      reg: Fix/update the German translation.
      regedit: Remove commented out STRINGTABLE from the resource files.
      regedit: Convert the German translation to UTF8.
      regedit: Fix the German translation.
      ntdll: Remove superfluous pointer casts.
      advapi32/tests: Don't use "long" for variable types.
      d3dxof/tests: Use ULONG instead of unsigned long.
      d3d8/tests: Use ULONG instead of unsigned long.
      d3d9/tests: Use LONG instead of long.
      ddraw/tests: Use ULONG instead of unsigned long.
      msi: Convert the German translation to UTF8 encoding.
      msi: Update the German translation.
      msi: Add the Romanian translation.
      setupapi: Update the Romanian translation.
      gdi32: Use "%p" to TRACE() pointers.
      uninstaller: Add the Romanian translation.
      msi: Remove redundant NULL check before msi_free (Smatch).
      d3dxof: Remove redundant NULL check before HeapFree (Smatch).
      crypt32: Change the encoding of the German translation to UTF8.
      crypt32: Update the German translation.

Nicolas Le Cam (2):
      shell32/tests: Fix a test on Win2k platform and above.
      schannel/tests: Fix test on Win2k.

Nikolay Sivov (9):
      comctl32/tab: Implement TCM_REMOVEIMAGE.
      comctl32/tab: Fix button background filling on TCS_BUTTONS.
      comctl32/tab: Implement TCM_[G,S]ETEXTENDEDSTYLE and TCS_EX_FLATSEPARATORS style.
      comctl32/trackbar: Fix reverting to default value for TBM_SETPAGESIZE with lParam = -1.
      comctl32/ipaddress: Store current IP address text as a window text for IP Address control.
      comctl32/listview: Some tests for LVM_GETSUBITEMRECT.
      comctl32/tab: Draw tab button properly on TCIS_BUTTONPRESSED state.
      comctl32/tab: Handle state mask in TCM_[G,S]ETITEM.
      comctl32/tab: Selected item should have TCIS_BUTTONPRESSED state.

Patrick Gauthier (1):
      user32/tests: Check effect of magic font height value 0x7fff in dialog template.

Paul Vriens (6):
      urlmon/tests: Fix a test failure on Vista and higher.
      riched20/tests: Fix and extend EM_FORMATRANGE tests.
      winspool.drv/tests: Fix a test failure on NT4 and below.
      comctl32/tests: Fix a crash on W2K and below.
      kernel32/tests: Fix crash on NT4 and higher.
      kernel32/tests: Fix some test failures on NT4 and below.

Rein Klazes (3):
      user32/tests: In sysparams.c disable some Get/Set border tests for now. These may permanently change desktop settings of the testers.
      user32: In MENU_SuspendPopup() make sure the right message is removed.
      user32/tests: Show that a submenu is still functional after calling DestroyMenu().

Ricardo Filipe (2):
      setupapi: Remove invalid check for < MAX_PATH and don't copy to NULL PathBuffer (Coverity 888).
      comdlg32: Send CDN_INCLUDEITEM notification for each object in an Open/Save dialog.

Rob Shearman (18):
      widl: Check the attributes applied to function declarations.
      widl: Output correct code for freeing of conformant-sized and non-conformant strings.
      widl: Initialise ref pointers to basic and enum types to 0 in generated server code.
      rpcrt4: Free the resources associated with server protocol sequences on DLL unload.
      rpcrt4: Simplify some code in RpcServerInqBindings by changing while loops into for loops.
      rpcrt4: Implement NdrRangeUnmarshall for enum types.
      rpcrt4: Fix a memory leak in union unmarshall functions by never passing fMustAlloc=TRUE into union_arm_unmarshall.
      services: Add a ref count to the service entry in svcctl_CreateServiceW.
      advapi32: Trace the contents of the in parameter to GetServiceKeyNameW, not the out parameter.
      services: svcctl_GetServiceDisplayNameW and svcctl_GetServiceKeyNameW should have string attribute on output buffer.
      services: Always initialise the out buffer in svcctl_QueryServiceStatusEx and svcctl_QueryServiceConfig2W.
      rpcrt4: Fix crash when calling RpcServerUseProtseq for ncacn_np and ncalrpc.
      rpcrt4: Implement stubless asynchronous NDR interpreter.
      rpcrt4: Implement RPC over HTTP support.
      widl: Include the version number in the __WIDL__ preprocessor definition.
      rpcrt4: Re-use already registered endpoints for a protocol sequence.
      rpcrt4: Allow listening on dynamically generated ncacn_ip_tcp endpoints.
      rpcrt4: Ensure that only the IP/IPv6 address families are considered in rpcrt4_protseq_ncacn_ip_tcp_open_endpoint/rpcrt4_ncacn_ip_tcp_open.

Robert Reif (1):
      dsound: Fix uninitialized variable.

Roderick Colenbrander (2):
      wined3d: Add WGL_ARB_pixel_format detection.
      wined3d: Add a classic WGL pixel format backend as not all OpenGL implementations support WGL_ARB_pixel_format.

Roman Mindalev (3):
      ntdll: Check for arch and name fields in assembly_identity structure.
      ntdll: Free memory for type field of an assembly_identity.
      ntdll: Move search for assemblyIdentity element.

Stefano Guidoni (1):
      winemp3: Fixed mpeg3_streamsize.

Vincent Povirk (1):
      gdiplus: Support line gradient brushes in GdipFillPath.

Vitaliy Margolen (1):
      shell32: Fix number of returned arguments from CommandLineToArgvW with empty string.

William Waghorn (2):
      msadp32: Refuse unknown destination format.
      imaadp32: Refuse unknown destination format.

--
Alexandre Julliard
julliard@winehq.org
