The Wine development release 1.1.37 is now available.

What's new in this release (see below for details):
  - A number of fixes in AVI file support.
  - Several MSXML improvements.
  - A few MSI fixes.
  - Various bug fixes.

The source is available from the following locations:

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

   7309  Desperados: image masking problem
   8232  Fate Axis - unimplemented function D3DRMCreate
   8867  Oblivion water lacks any shader effects
   9034  Fireworks 3 help fails, URL passed to winebrowser mishandled
   9369  cannot use context menu in password gorilla
  10047  Oblivion water lacks transparency
  11462  Protel does not show correctly status bar
  11795  Oblivion giant tree sprite(s) follow the player
  12871  Civilization 2 Test of Time is Unplayable
  13560  Baldur's Gate 2 Throne of Bhaal fails to save game because the file default.tot exists in the game temp directory.
  13827  Oblivion distant trees flicker and look like 2D sprites
  14443  Enterprise Architect - Text inside block rendered in reversed order
  15368  Heroes of Might and Magic IV crashes
  15388  gdi32: dib.c fails to build with gcc 4.2, -Werror -O3
  15496  Rome Total War always crashes on certain maps
  15580  The Bat! v4.0.34.13 - lose birthday in addressbook
  15962  BMW M3 Challenge: Screen between intro and menu is invisible
  16143  msxml1: Can't set an attribute to Null
  16496  Battlezone 2: frame rate deteriorated
  16750  ntdll/tests/rtlbitmap.c: comparison is always false due to limited range of data type
  16965  Deep Burner opens with missing buttons on burn iso window
  16981  SAMO-Touragent does not work with new gecko engine (since 1.1.12)
  17041  Console messages cut short?
  17123  WinAVR: make command fails with Interrupt/Exception caught
  17172  IDirect3DDevice9::Present ignores pDestRect
  17203  Regression in PowerPC compilation
  17308  ArtRage needs native gdiplus
  17650  Maya PLE 8.5 doesn't install
  18381  Oblivion: blank screen when HDR is enabled
  18541  HoneyBOT: Wine crash upon Right Click Copy of text.
  18658  Kingsoft Office crashes almost immediately on launch
  19395  ExSystemTimeToLocalTime is not implemented
  20406  Perfect World International - Diagonal Lines on Tiger Barbarians
  20841  Read buffer overflow in test_GetSidSubAuthority?
  21087  Civilization 2 crashes during installation
  21206  Cygwin 1.7.1 fails to install packages under wine
  21220  16-bit app barks at wprocs.dll and then crashes
  21289  System call "dup2" returns 0 for negative inputs, thus behaving different from real Windows
  21291  System call "dup2" doesn't retain text vs binary mode
  21320  wine/list.h has namespace conflicts with sys/queue.h
  21331  Stars! crash on "New Game"
  21334  build broken on OpenSolaris

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

Changes since 1.1.36:

Alexander Kochetkov (1):
      user32: Fix arithmetic overflow in GetThumbVal.

Alexandre Julliard (15):
      winebuild: Do not output an undefined symbol reference for variables.
      winebuild: Rename __wine_call_from_32_regs for consistency with 64-bit.
      winebuild: Output the asm relay functions as needed and get rid of --relay32 mode.
      winebuild: Output the 16-bit asm relay functions as needed and get rid of --relay16 mode.
      ntdll: Fix the NtCreateEvent prototype.
      winedump: Remove an unused flag.
      msi: Add a partial stub for the ValidateProductID control event.
      ntdll: Implement LdrQueryImageFileExecutionOptions and use it to retrieve the per-process global flag.
      ntdll: Load the various PEB global options at startup.
      wine.inf: Add entries for some of the global options.
      include: Define some more of the NT global flag values.
      ntdll: Make it possible to use RtlGetNtGlobalFlags before the TEB is initialized.
      ntdll: Set the heap debug flags based on the GlobalFlag value.
      kernel32/tests: Add tests for the global flag and its influence on the heap flags.
      winex11: Use the thread connection to clear the systray icon window.

Andrew Eikum (5):
      wininet: Add Internet{Set,Query}Option tests, implement POLICY option.
      wininet: Convert PER_CONN_OPTION_LIST from A to W in InternetSetOptionA.
      wininet: Pull proxy info gathering into its own function.
      wininet: Implement PER_CONN_PROXY_SERVER option.
      wininet: Implement PER_CONN_FLAGS option.

Andrew Nguyen (19):
      ntdll/tests: Make function pointer checks consistent and report skips.
      ntdll/tests: Allow native crashing code to be compiled.
      ntdll/tests: Add a few additional tests for wcschr.
      ntdll/tests: Add a few additional tests for wcsrchr.
      advapi32/tests: Test SystemFunction036.
      msvcrt: Implement and test rand_s.
      ntdll/tests: Remove obsolete commented code.
      ntdll/tests: Remove useless ifdef statements.
      ntdll/tests: Report skip when time conversion functions are not available.
      ntdll/tests: Re-enable a commented virtual memory test.
      ntdll/tests: Report appropriate skips for information tests.
      kernel32/tests: Add tests for IsBadReadPtr.
      kernel32/tests: Add more tests for IsBadWritePtr.
      kernel32/tests: Add tests for IsBadCodePtr.
      mapi32/tests: Report skips for unavailable property functions.
      mapi32/tests: Report skips for unavailable utility functions.
      mapi32/tests: Report skip for MAPIGetDefaultMalloc.
      mapi32/tests: Fix the PropCopyMore tests and add an additional test.
      mapi32/tests: Centralize property function pointer initialization.

André Hentschel (5):
      kernel32/tests: Simplify string generation.
      msvcrt: Forward __C_specific_handler to ntdll.
      msvcrt/tests: Add some demangle tests.
      msvcrt: Fix typo.
      kernel32/tests: Initial fiber tests.

Aric Stewart (1):
      oleaut32: Do not crash in logging if string is NULL.

Austin English (1):
      winecoreaudio.drv: Reorder includes to avoid OS X bug.

Christian Costa (24):
      d3drm: Add definitions for IDirect3DRM2 and IDirect3DRM3 interfaces.
      d3drm: Fix LPDIRECT3DRM definition and make sure it is defined before including d3drmobj.h.
      d3drm: Add some definitions.
      d3drm: Add some object interface definitions.
      d3drm: Simplify declaration of VTable members (spotted by Dmitry Timoshkov).
      d3dxof: Simplify declaration of VTable members.
      amstream: Simplify declaration of VTable members.
      d3drm: Fix IDirect3DRMObject2 macros.
      d3drm: Fix IDirect3DRMDevice macros.
      d3drm: Add definitions for IDirect3DRMDevice2.
      d3drm: Add definitions for IDirect3DRMDevice3.
      msvcr71: Add forward to msvcrt for ?swprintf@@YAHPAGIPBGZZ and ?vswprintf@@YAHPAGIPBGPAD@Z.
      d3drm: Add definitions for IDirect3DRMViewport.
      d3drm: Add definitions for IDirect3DRMViewport2.
      d3drm: Add definitions for IDirect3DRMFrame.
      d3drm: Add definitions for IDirect3DRMFrame2.
      d3drm: Add definitions for IDirect3DRMFrame3.
      d3drm: Add definitions for IDirect3DRMMesh.
      d3drm: Add definitions for IDirect3DRMProgressiveMesh.
      d3drm: Add definitions for IDirect3DRMShadow and IDirect3DRMShadow2.
      d3drm: Add definitions for IDirect3DRMFace.
      gdi32: Improve some FIXMEs.
      d3drm: Add definitions for IDirect3DRMFace2.
      d3drm: Add definitions for IDirect3DRMMeshBuilder.

Damjan Jovanovic (1):
      sti: Add launch application registry.

David Adam (1):
      d3drm: The input quaternions are not changed when calling D3DRMQuaternionSlerp.

Detlef Riekenberg (2):
      commdlg: Fix PrintDlg parameter checks.
      avifil32/tests: Add initial tests.

Dmitry Timoshkov (1):
      winmm: Buffer size must be at least MMIO_DEFAULTBUFFER (8192) bytes.

Erich Hoover (1):
      ntoskrnl: Forward ExSystemTimeToLocalTime and ExLocalTimeToSystemTime to ntdll.

Freddie Tilley (1):
      ntdll: Set cpu frequency for FreeBSD 7.2 and higher.

Gerald Pfeifer (1):
      krnl386: Move WINE_DECLARE_DEBUG_CHANNEL(module) under #ifdef MZ_SUPPORTED.

Hans Leidekker (5):
      msi: Support retrieving rows from join tables.
      msi: Fix parsing of feature overrides.
      msi: Add a test to exersize the code to retrieve rows from join tables.
      msi: Add support for updating rows in join tables.
      msi: Add tests for updating rows in join tables.

Henri Verbeet (13):
      d3d8: Remove the unused Direct3DResource8_Vtbl.
      d3d9: Add a separate function for query initialization.
      wined3d: Add a separate function for query initialization.
      wined3d: Remove some unused query code.
      wined3d: Merge baseshader.c into shader.c.
      wined3d: Don't leak the context array in the swapchain_init() error path.
      wined3d: Set the query.c GLINFO_LOCATION to *gl_info.
      d3d9: Add a separate function for stateblock initialization.
      wined3d: Sort our GL extension definitions.
      wined3d: Fix the ARB_pixel_buffer_object extension definitions.
      wined3d: Remove the second set of EXT_texture_env_dot3 definitions.
      wined3d: Remove the duplicate GL_2X_BIT_ATI define.
      wined3d: Remove unused occlusion query extensions.

Huw Davies (5):
      include: Add the ability to initialize oledb constants independently of the INITGUID define by defining DBINITCONSTANTS instead.
      msdaps: Switch to using an entry prefix for the auto-generated dlldata routines.
      msdaps: Add stub class factories for the row and rowset servers and proxies.
      msdaps: Register the row and rowset proxy and server classes.
      shell32: Add a test to show the IShellLink_GetIDList returns a copy of the IDList, remove an incorrect comment and fix a memory leak.

Ilya Shpigor (2):
      gdi32: Additional checking in the test for font creation with the OEM charset.
      winex11.drv: Produce VK_CANCEL vkey on the Ctrl+Pause/Break pressing.

Jacek Caban (12):
      mshtml.idl: Added IHTMLIFrameElement interface declaration.
      mshtml: Added IHTMLIFrameElement stub implementation.
      mshtml: Added IHTMLIFrameElement IDispatchEx support.
      mshtml: Silence invalid FIXME.
      mshtml: Store document as IHTMLDocument2 interface.
      mshtml: Create URL moniker after test initialization.
      mshtml.idl: Added DispHTMLFrameElement dispinterface declaration.
      mshtml.idl: Added IHTMLFrameElement3 declaration.
      mshtml: Added IHTMLFrameElement3 stub implementation.
      mshtml: Added IHTMLFrameElement3::get_contentDocument implementation.
      mshtml: Added IDispatchEx support for frame element.
      jscript: Skip tests on too old jscript.dll.

James Hawkins (1):
      Revert "advapi32: Free descriptor if it isn't returned from GetSecurityInfo().".

Jason Edmeades (6):
      msvcrt: Add support for vsprintf_s.
      msvcrt: Add support for sprintf_s.
      comctl32/listview: Issue LVM_DELETEALLITEMS from WM_DESTROY.
      kernel32: Return error on second attempt to free a module.
      netapi31: Add basic support for NetServerGetInfo.
      msi: Correct the setting of environment variables.

Jeff Zaroyko (2):
      msvcrt/tests: Test _dup2 for failure when second arg is negative.
      msvcrt: Check if argument passed to _dup2 is positive.

Juan Lang (1):
      secur32: Report an error if libgnutls isn't found.

Julius Schwartzenberg (7):
      avifil32/tests: Initial test data and simple test for avifil32.
      avifil32/tests: Test corrupt avi list magic.
      avifil32/tests: Test how avifile deals with audio stream and wave headers.
      avifil32: Overwrite dwRate in the audiostream with the nBlockAlign from the wave header.
      avifil32: Fix header suggested buffersize.
      avifil32: Allow files with different extensions to be loaded.
      avifil32: Use chunksize specified by the chunk itself, avoids a noticable ticking sound heard when reading past the chunk boundary.

Jörg Höhle (1):
      wine.inf: Correct MCI entries.

Kusanagi Kouichi (4):
      user32/tests: Add test for Shift+F10.
      user32: Make DefWindowProc handle Shift+F10.
      user32: Add definitions for EM_GETIMESTATUS and EM_SETIMESTATUS.
      user32: F10 key deactivates menu.

Maarten Lankhorst (3):
      mmdevapi: Add code to enumerate NOTPRESENT devices.
      mmdevapi: Dump device id in test.
      avifile: Fix playback of fixed sample size audio streams.

Marcus Meissner (2):
      shell32: Handle bad menu handle (Coverity).
      dplayx: Remove currently unused unicode code (Coverity).

Michael Stefaniuc (15):
      Grammar fixes "is doesn't" => "doesn't".
      dmime: Avoid newlines inside FIXME messages.
      devenum: Avoid newlines inside FIXME messages.
      user32: Avoid newlines inside FIXME messages.
      objsel: Avoid newlines inside FIXME messages.
      ddraw: Simplify DllCanUnloadNow().
      dmusic: Avoid newlines inside FIXME messages.
      dmscript: Avoid newlines inside FIXME messages.
      dmstyle: Avoid newlines inside FIXME messages.
      dmcompos: Avoid newlines inside FIXME messages.
      dmsynth: Avoid newlines inside FIXME messages.
      d3d10: Remove superfluous NULL check before HeapFree (Smatch).
      d3d10: Remove break after return (Smatch).
      dmband: Avoid newlines inside FIXME messages.
      crypt32/tests: Add a win_skip().

Mike Kaplinskiy (2):
      msxml: getElementsByTagName does not respect namespaces.
      server: Activate pending asyncs on a hangup/error.

Nikolay Sivov (27):
      msxml3: Don't leak externaly allocated xmlSAXHandler.
      msxml3: Don't lose pointer to externaly allocated xmlSAXHandler copy.
      msxml3/tests: Fix some string leaks in tests.
      msxml3: Fix string leak while parsing with IXMLDOMDocument.
      msxml3: Implement IXMLDocument::get_version().
      msxml3: Implement IXMLDocument::get_doctype().
      msxml3: Get rid of upper case converting helper.
      advapi32: Free descriptor if it isn't returned from GetSecurityInfo().
      msxml3/tests: Add some tests for IPersistStreamInit implementation of IXMLDocument.
      msxml3/xmldoc: Fix IPersistStreamInit::GetClassID() for IXMLDocument.
      msxml3/xmldoc: IPersistStreamInit::InitNew() seems to do nothing for IXMLDocument.
      msxml3/xmldoc: Don't leak document and stream on next IXMLDocument::Load().
      msxml3: Don't preallocate root element, return new instance on each call.
      msxml3: Implement IXMLElement::removeChild() with some tests.
      msxml3: In IXMLElementCollection store pointer to node instead of pointer to children.
      msxml3: Track linked/unlinked state for element and free node data only when unlinked.
      msxml3/tests: Fix interface leak and message typo.
      msxml3: Implement IXMLDOMElement::removeAttribute().
      msxml3: Use a helper to check for created content handler.
      include: Add IXmlReader interface definition.
      xmllite/tests: Add basic test structure for IXmlReader.
      xmllite: Add stub implementation of IXmlReader interface.
      msxml3: Implement IXMLDOMComment::deleteData() with tests.
      msxml3/tests: Fix interface leak.
      xmllite/tests: Test query for supported interface sequence while creating IXmlReaderInput instance.
      xmllite: Add IXmlReaderInput stub implementation.
      xmllite: Basic input object creation on IXmlReader::SetInput().

Paul Vriens (22):
      ntdll/tests: Fix a test failure on NT4.
      comctl32: Fix size parameter for memset (Coccinelle).
      widl: Fix size parameter for xrealloc (Coccinelle).
      oleview: Fix size parameter for memset (Coccinelle).
      winedump: Pass the correct size to the helper (Coccinelle).
      msvidc32: Fix size parameter for memset (Coccinelle).
      d3d9/tests: Correct the size of a memcmp.
      dsound: Fix a typo.
      rsaenh/tests: Don't check result twice (Coccinelle).
      winealsa.drv: Don't check input parameter twice (Coccinelle).
      dinput: Don't check a parameter twice (Coccinelle).
      dxdiagn/tests: Fix some test failures on a clean W2K3.
      inetmib1/tests: Free memory after use (Valgrind).
      shell32: Remove some unneeded parameter setting.
      user32/tests: Run tests again on Win95.
      kernel32/tests: Skip a test on Win9x/WinMe.
      shell32/tests: Fix crash on ancient Win95.
      rasapi32/tests: Fix some test failures on Win9x.
      user32/tests: Don't crash on Win9x/WinMe.
      xmllite/tests: Remove some tests that make Vista SP0 crash.
      rpcrt4/tests: Fix some memory leaks (Valgrind).
      msvcrtd/tests: Fix a memory leak (Valgrind).

Peter Dons Tychsen (2):
      user32: Do not allow a change of capture if the currently capture window is a menu unless explicitly specified.
      comctl32: Handle WM_NOTIFY correctly when the parent returns zero.

Piotr Caban (7):
      jscript: Added implementation of Array.reverse.
      jscript: Make Array.join generic.
      shlwapi: Fix MLBuildResURLW implementation.
      jscript: Make Array.pop generic.
      jscript: Make Array.sort generic.
      jscript: Add error handling to Array.reverse.
      shlwapi: Improved res protocol handling in UrlCanonicalizeW.

Rico Schüller (2):
      d3d10: Reorder struct d3d10_effect_variable to make the initialisation nicer.
      d3d10: Parse effect shaders as anonymous shaders.

Rob Shearman (9):
      wpp: Fix expansion of macro bodies following the parsing of a numerical digit.
      widl: Add support for character constants in expressions.
      rpcrt4: Add structure definition for RPC AUTH3 packet and use the size of this on sending to fix authentication against native servers.
      include: Replace hexadecimal representation of four character codes in WINED3DFORMAT enum with macros using the actual characters.
      widl: Fix symbol was not declared and using plain integer as NULL pointer sparse warnings.
      wrc: Fix symbol was not declared and using plain integer as NULL pointer sparse warnings.
      server: Fix symbol was not declared and using plain integer as NULL pointer sparse warnings.
      ole32: Rearrange declarations in itemmoniker.c to avoid unnecessary forward declarations.
      wmc: Fix symbol was not declared and using plain integer as NULL pointer sparse warnings.

Stefan Leichter (1):
      user.exe: Forward WNetGetUser16 to WNetGetUserA of mpr.dll, based on a patch from Andrew Nguyen.

Uwe Bonnes (3):
      msvcrt: In unbuffered text mode reading \r\n with fgetc fails.
      msvcrt: xxopen() accepts spaces in the mode string.
      msvcrt: Handle CR at buffer boundary and test case.

Vitaly Lipatov (1):
      wineconsole: Fix Russian translation.

--
Alexandre Julliard
julliard@winehq.org
