The Wine development release 1.5.14 is now available.

What's new in this release (see below for details):
  - Much better behavior of the URL cache.
  - Improved GIF image support.
  - More parser features in the shader compiler.
  - Optimizations in JavaScript.
  - Various bug fixes.

The source is available from the following locations:

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

   3749  Failure to install Dawn of War demo
  10087  MessageBox-based Win95 Program hangs after putting up frame
  11496  cube hangs on startup attempting to play music / SDL_mixer 1.2.6
  12622  SSF: program ends prematurely
  16409  Ableton Live 7.0.12 crashes on startup
  18346  cmd does not support the "^" escape character
  19599  Closing Adobe Device Central CS4 causes a page fault
  19612  Adobe ExtendScript Toolkit CS4 causes a page fault
  20149  user32: static test often fails with glsl disabled
  20496  wine iexplore crashes if cancelling gecko install
  20919  Six tests usually or always hang in valgrind
  21642  NVIDIA 9300 mGPU misreported as 9200
  22431  if exist "%VAR%"\file does not work
  23876  Temporary Internet Files growing endless
  25944  kernel32: console tests show some valgrind warnings
  25947  dmime:performance tests shows some memory leaks under valgrind
  25957  d3d_compiler / d3dx9_36: asm tests show a ton of valgrind warnings
  26007  qedit/mediadet tests show leaks under valgrind
  26047  comctl32/propsheet tests show some leaks under valgrind
  26050  winmm/mci tests show quite a few valgrind warnings
  26054  shell32/shlfolder tests show some leaks under valgrind
  26055  shell32/shellink test shows a nasty valgrind warning
  26056  comctl32/subclass tests shows a leak under valgrind
  26067  user32/dialog tests show some valgrind warnings
  26068  user32/dce tests shows a valgrind warning
  26069  user32/clipboard tests shows a valgrind warning
  26072  urlmon/protocol tests show some valgrind warnings
  26073  shell32/shelldispatch tests show some valgrind warnings
  26099  rpcrt4/ndr_marshal shows a ton of valgrind warnings
  26100  rpcrt4/cstub shows a couple valgrind warnings
  26104  oleaut32/safearray shows a memory leak according to valgrind
  26106  ole32/ole2 tests show several valgrind warnings
  26107  ole32/clipboard tests show several valgrind warnings
  26117  imm32/imm32 tests show a couple memory leaks under valgrind
  26118  kernel32/change tests show a ton of valgrind warnings
  26120  kernel32/sync tests shows a few valgrind warnings
  26128  shell32/appbar tests shows a valgrind warning
  26129  ddraw/visual tests show a memory leak under valgrind
  26131  dsound/duplex tests show an uninitialized variable under valgrind
  26132  dsound/capture tests shows some leaks under valgrind
  26134  d3d9/query test shows a few leaks under valgrind
  26135  mmdevapi/render tests show several memory leaks under valgrind
  26286  Briscola Chiamata crashes on startup
  26574  Homefront: no sound in menu unless Hardware acceleration = emulation
  26575  Homefront: annoying buzz sound in menu/game
  26924  Calling UpdateLayeredWindowIndirect in multi-threaded apps might lead to freezes (Beta League of Legends Patcher, Tunatic, .NET 3.x/4.x WPF apps)
  27119  SJphone crashing, probably on dsound
  27258  audacity 1.3.12 run time error r6034
  27440  Movement ingame is not possible in Code of Honor 2 demo.
  27506  Alpha Protocol wants d3dx9_36.dll.D3DXSHRotate (purist)
  28038  wininet/tests/urlcache: CommitUrlCacheEntry crashes sometimes when cache is full?
  28703  gdiplus/tests/image.ok: valgrind complains "Uninitialised value created by a stack allocation at test_GdipCreateBitmapFromHBITMAP"
  28749  urlmon/tests/protocol.c fails and hangs under valgrind
  29446  ApaReader.exe can not display content in embed iexplore
  29573  Battle.net System Check reports zero (0) megabytes of video RAM
  29950  Softonic downloaders deadlocks
  30365  Kashmir3D: some menu items aren't displayed correctly
  30739  crash in async_stop_request (dlls/mshtml/navigate.c:1352)
  30906  unimplemented function atl80.dll.AtlGetVersion,
  30921  Opera 12.00 installer fails
  31011  Mono and Gecko cannot be installed on Mac OSX Lion
  31238  Endless Space: scrolling to zoom doesn't work.
  31329  3DMark06: crashes because ctype<char>::vftable is incorrect (msvcp71)
  31331  Alan Wake crashes after intro movies
  31340  Oblivion : black skin of all the npc's
  31514  League of Legends crashes after champion select because of non-implemented timeout in IEnumWbemClassObject::Next
  31540  Toad: Installer is missing a few dialogs without native vbscript
  31596  Microsoft SQL Server Management Studio Express 2005: cannot create database because of exception (GDI+ cannot read display times of animated GIF frames)
  31598  Temple of Elemental Evil crash at start
  31648  MaxIM DL 5.22 fails to install
  31681  Sony PC Companion 2.10 crashes during install
  31702  Mouselook (raw input) is bound to a box every other click in Guild Wars 2
  31711  Sample app crashes in user32
  31717  aplication crashes when attempting to interact with TAPI32 - unimplemented? Tapi32.dll.lineInitializeExW
  31722  TeamViewer 7.0.14563 crashes on start
  31739  Sandlot Games launcher crashes in mshtml
  31750  Dark Scavenger crashes on startup when client side rendering enabled
  31762  TextPad 6 works only on the first run (can't save preferences without native mlang.dll)
  31768  Starcraft: Brood War loses mouse focus when using ICCup's W-Mode plugin

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

Changes since 1.5.13:

Adrian Bunk (1):
      server: Use waitpid() instead of wait4().

Alexandre Julliard (39):
      ddraw/tests: Fix clip region tests for older ddraw too.
      winex11: Avoid passing a window data structure to functions that can send messages.
      winex11: Allow retrieving the window data structure from another thread, with appropriate locking.
      user32/tests: Add a test for calling UpdateLayeredWindow from a different thread.
      user32/tests: Fix coordinates in the UpdateLayeredWindow broken case.
      winex11: Add window data locking to the mouse functions.
      winex11: Add window data locking to the drag and drop functions.
      winex11: Add window data locking to the system tray functions.
      winex11: Add a helper function to set input focus for non-managed windows.
      winex11: Add window data locking to the focus event handlers.
      winex11: Add window data structure locking to the Expose event handler.
      winex11: Add window data structure locking to the ConfigureNotify event handler.
      winex11: Add window data structure locking to the ReparentNotify event handler.
      winex11: Add window data structure locking to the GravityNotify event handler.
      winex11: Add window data structure locking to the XEmbed event handler.
      gdi32: Always update the DC before looking for the physdev pointer.
      winex11: Move the support for making the owner window managed to a separate function.
      winex11: Separate fetching the window icon bits and setting the WM hints.
      winex11: Add window data structure locking to the X window creation paths.
      winex11: Add window data structure locking to the window region functions.
      winex11: Store the window display connection in the window structure.
      winex11: Add window data structure locking to the map/unmap functions.
      include: Fix the CDSIZEOF_STRUCT definition to avoid warnings on 64-bit.
      winex11: Add window data structure locking to the ShowWindow entry point.
      winex11: Add window data structure locking to the SysCommand entry point.
      winex11: Add window data structure locking to the WindowPosChanging/Changed entry points.
      winex11: Add window data structure locking to the SetWindowStyle entry point.
      winex11: Add window data structure locking to the SetLayeredWindowAttributes entry point.
      winex11: Add window data structure locking to the remaining entry points.
      server: Get rid of the waitpid wrapper.
      winex11: Add a workaround for XInput support with mouse drivers that don't provide labels.
      winex11: Store the full visual info for the default visual.
      winex11: Create a default colormap along with the default visual info.
      winex11: Remove some unused palette code.
      winex11: Recreate the graphics context when setting the drawable.
      wineps: Always escape Postscript reserved characters in font names.
      gdi32: Allow GetCharABCWidths on all scalable fonts, not just TrueType ones.
      gdi32: Enumerate a default charset if no other valid charset was found.
      user32: Add tests for UpdateLayeredWindowIndirect and fix the behavior of the ULW_EX_NORESIZE flag.

Alistair Leslie-Hughes (7):
      oledb32: Register typelib.
      odbccu32: Add new dll.
      ole32: Add CoGetDefaultContext stub.
      scrrun: Add Scripting.Dictionary interface.
      uuid: Add msdasc.h.
      oledb32: Add IDataInitialize interface support.
      scrrun: Silence unknown interfaces.

Andrew Eikum (1):
      dsound: Don't require WAVE_FORMAT_EXTENSIBLE for non-16-bit formats.

André Hentschel (8):
      vcomp90: Add new stub dll.
      iphlpapi: Implement GetIpStatisticsEx on Linux.
      iphlpapi: Implement GetUdpStatisticsEx on Linux.
      iphlpapi: Implement GetIcmpStatisticsEx on Linux.
      iphlpapi: Improved GetTcpStatisticsEx stub.
      ntdll/tests: Fix test failure on win8.
      crypt32/tests: Improve test output.
      ole32/tests: Use IUnknown_Release instead of deprecated WdtpInterfacePointer_UserFree.

Aric Stewart (2):
      user32: Free the uniscribe data before freeing the linedefs.
      imm32: Properly separate the IME UI window and the thread default IME window.

Bruno Jesus (2):
      tapi32: Add stub lineInitializeExW.
      wined3d: Recognize GeForce 9300 properly.

Charles Davis (6):
      advapi32: Eliminate dead stores (Clang).
      advapi32: Actually return an error if status indicates an error (Clang).
      urlmon: Fix potential use of uninitialized variable (Clang).
      oleaut32/tests: Don't take the size of a pointer (Clang).
      oleaut32/tests: Don't use a C99 keyword as a method name.
      loader: On Mac OS with Clang, don't use external symbols for the DOS and shared heap segments.

Christian Costa (27):
      d3dxof: Checkout output pointer and set returned interface to NULL at the beginning.
      dmusic: Rename params in CreateMusicBuffer.
      dmusic: Rename params in GetMasterClock.
      dmusic: Create the list of available system ports at the beginning and use it to enumerate ports.
      dmusic: Use system ports list to create port in CreatePort and rename params.
      dmusic: Display new ref in AddRef and Release methods.
      dmusic: Rename CreateSynthPortImpl to CreateSynthPortImpl and create stubs for CreateMidi{In|Out}PortImpl.
      dmusic: Rename IDirectMusicPortImpl object to SynthPortImpl.
      dmusic: Rename params in DMUSIC_CreateSynthPortImpl.
      dmusic: Setup and free all DirectMusicSynth objects when creating and releasing Synth port.
      dmusic: Implement SynthPortImpl_IDirectMusicPort_PlayBuffer.
      dmusic: Add comments to Synth port vtables.
      dmusic: Rename params of SynthPortImpl_IDirectMusicPort_DownloadInstrument.
      dmusic: Rename params in IDirectMusic8Impl_GetDefaultPort.
      dmusic: Rename params in SynthPortImpl_IDirectMusicPort_QueryInterface.
      dmsynth: Implement IKsControl_KsProperty for Synth and SynthSink objects.
      dmime: Rename params in IDirectMusicPerformance8Impl_AssignPChannel & IDirectMusicPerformance8Impl_PChannelInfo.
      amstream: Rename media stream objects and their method names for multi interfaces support.
      amstream: Add IAMMediaStream interface to DirectDrawMediaStream object.
      amstream: Add IAMMediaStream interface to AudioMediaStream object.
      d3dx9_36: Add stub for D3DXCleanMesh.
      comctl32: Invalid format returned by NF_QUERY defaults to ANSI in treeview.
      d3dx9_36: Cube texture can be loaded as a simple texture. The first face texture is taken in that case.
      dmusic: Add master clock tests.
      ntoskrnl.exe: Improve IoAllocateMdl stub.
      ntoskrnl.exe: Add partial stub for IoFreeMdl.
      dmusic: Check returned value of GetPortCaps.

Daniel Jelinski (1):
      ieframe: cxMinChild needs to be set if RBBIM_CHILDSIZE is set.

Detlef Riekenberg (1):
      d3dx9_36/tests: Fix copy & paste error in ok messages.

Dmitry Timoshkov (41):
      windowscodecs: Implement GIF Application Extension metadata reader.
      windowscodecs: Implement GIF Comment Extension metadata reader.
      windowscodecs: Add support for color table sort flag to the GIF decoder.
      windowscodecs: Store GIF frame extensions in a dedicated Extensions structure.
      windowscodecs: Create global metadata blocks in the GIF decoder.
      windowscodecs: GIF Graphic Control Extension block belongs to the image which follows it.
      windowscodecs: GIF decoder should append a sub-block to current extension.
      windowscodecs: GIF decoder should add header and trailer to extension blocks.
      windowscodecs: Create global metadata readers from GIF decoder data.
      windowscodecs: Create frame metadata readers from GIF decoder data.
      windowscodecs: Correct some typos.
      windowscodecs: Use symbolic names for GIF extensions.
      gdiplus: Add some tests for scaling an image with various pixel offset modes.
      gdiplus: Add preliminary support for pixel offset modes.
      gdiplus: Add some tests for GIF properties.
      windowscodecs: Add support for VT_LPWSTR property ids to MetadataHandler_GetValue.
      windowscodecs: Avoid unnecessary memory allocations.
      gdiplus: Test GIF properties using a specially created GIF image with a bunch of extensions.
      gdiplus: Add more tests for GIF image properties.
      gdiplus: Add an ability to cache bitmap properties and use distinct metadata loaders for different image formats.
      windowscodecs: Add some tests for GIF palette.
      windowscodecs: Return WINCODEC_ERR_FRAMEMISSING if there is no global GIF palette.
      windowscodecs: Fix calculation of transparent GIF color index.
      windowscodecs: Add some tests for GIF global palette.
      windowscodecs: Implement IWICBitmapDecoder_CopyPalette for the GIF decoder.
      windowscodecs: Add some tests for palette in a multiframe GIF image.
      windowscodecs: Calculate transparent color index for global GIF palette.
      windowscodecs: Take into account return value of IWICPalette_InitializeCustom().
      gdiplus: Make GIF palettes in a custom test image slightly more different.
      gdiplus: Remove GIF properties test from generic tests, they are tested separately.
      gdiplus: Add GIF comment to the image properties.
      gdiplus: Add GIF frame delay to the image properties.
      gdiplus: Add GIF background to the image properties.
      gdiplus: Add GIF transparent index to the image properties.
      gdiplus: Add GIF loopcount to the image properties.
      gdiplus: Add GIF palette to the image properties.
      windowscodecs: Use appropriate helper to release GIF decoder.
      gdiplus: Move font substitution test into a separate function.
      gdiplus: Take into account font substitution in GdipCreateFontFamilyFromName.
      gdiplus: Take into account font substitution in GdipCreateFontFromLogfont.
      gdiplus: Reuse an existing image stream in GdipImageSelectActiveFrame.

Erich Hoover (4):
      ddraw: Convert calls to DirectDrawEnumerate into DirectDrawEnumerateEx.
      ddraw: Enumerate wined3d interfaces with DirectDrawEnumerateEx.
      kernel32: Report FILE_PERSISTENT_ACLS flag for NTFS volumes.
      shell32: Create the All Users Microsoft directory.

Francois Gouget (35):
      msvcp71: Remove an unused debug channel.
      kernel32/tests: Add more FormatMessage() line wrapping tests.
      kernel32: Replace the format_message() helper macro with a static function.
      kernel32: There is no need to zero-fill the FormatMessage() temporary buffer.
      wined3d: Remove an unwanted trailing '\n' in shader_dump_register().
      jscript: Make jsval_variant() static.
      d3dcompiler_43: Make add_type_to_scope() static.
      d3dcompiler_43: Remove an unwanted trailing '\n' in debug_dump_instr().
      comdlg32: Make FD31_GetFldrHeight() static.
      shell32/tests: Use consistent types for the ShellExecute() & co return value.
      shell32: Add tests for ShellExecute()'s handling of file URLs.
      d3dx9_36/tests: Fix compilation on systems that don't support nameless structs or unions.
      windowscodecs: Fix compilation on systems that don't support nameless unions.
      oleaut32/tests: Fix compilation on systems that don't support nameless structs or unions.
      regedit: Fix the spelling of multi-string.
      kernel32: Add line wrapping support to FormatMessage().
      d3dcompiler_43: Make compare_hlsl_types_rb() static.
      mshtml: Make navigate_uri() static.
      wininet: Make URLCacheContainers_{Create,Delete}All() static.
      Use the CP_ACP and NULL macros instead of numeric literals when converting strings between ANSI and Unicode.
      shlwapi/tests: Add more PathCreateFromUrl() tests.
      shlwapi: Fix the declaration of UrlIsFileUrlW().
      shell32/tests: Add a few more ShellExecute() file URL tests.
      kernel32: Add more flags for CompareString().
      Assorted spelling fixes.
      include: Add more string types.
      shell32: Add some more function prototypes and fix the IsNetDrive() one.
      wininet: Check for the 'http:' protocol in a locale independent way.
      mshtml/tests: Add a trailing '\n' to an ok() call.
      include: Remove a misplaced duplicate definition of SORT_STRINGSORT.
      shlwapi: PathCreateFromUrlA() should not crash when given NULL buffers.
      shlwapi: UrlIs()'s check for the 'file:' protocol is case insensitive.
      shlwapi: Fix the PathCreateFromUrlW() implementation.
      wininet: Add a trailing '\n' to a couple of Wine traces.
      d3dx9_36/tests: Remove spaces before '\n's in ok() calls.

Frédéric Delanoy (2):
      cmd: Spelling fixes.
      cmd: Reuse common string constants.

Gerald Pfeifer (1):
      d3dx9_36: Fix initialization of header in save_dds_surface_to_memory. save_dds_surface_to_memory.

Hans Leidekker (17):
      wbemprox: Adapt to the new behavior of NtPowerInformation.
      wbemprox: Override variant conversion for Win32_Processor.MaxClockSpeed.
      wbemprox: Win32_Processor.MaxClockSpeed is expressed in Mhz.
      wbemprox: Implement Win32_VideoController.Description.
      wbemprox: Fix a memory leak.
      wbemprox: Add helpers to retrieve the system directory and OS architecture.
      wbemprox: Implement Win32_OperatingSystem.LastBootUptime.
      hnetcfg: Add a typelib.
      hnetcfg: Add IDispatch support for INetFwAuthorizedApplication and INetFwAuthorizedApplications.
      hnetcfg: Add IDispatch support for INetFwMgr, INetFwPolicy and INetFwProfile.
      hnetcfg: Return success from INetFwAuthorizedApplication::put_Scope.
      httpapi: Add a stub implementation of HttpAddUrl.
      wbemprox: Implement IWbemServices::ExecMethod.
      include: Add wbemprov.idl.
      wbemprox: Add support for WbemAdministrativeLocator.
      wbemprox: Implement Win32_BIOS.Version.
      wbemprox: Implement Win32_ComputerSystem.Domain.

Henri Verbeet (50):
      wined3d: Introduce a union for declaration shader instruction arguments.
      wined3d: Recognize the SM4 dcl_maxOutputVertexCount opcode.
      wined3d: Recognize the SM4 dcl_inputPrimitive opcode.
      wined3d: Recognize the SM4 dcl_outputTopology opcode.
      wined3d: Implement WINED3DSIH_CUT in the GLSL shader backend.
      d3d10core: Implement d3d10_device_RSSetViewports().
      d3d10core: Implement d3d10_device_RSGetViewports().
      wined3d: wined3d_device_set_material() never fails.
      wined3d: wined3d_device_get_material() never fails.
      wined3d: Implement WINED3DSIH_EMIT in the GLSL shader backend.
      d3d10core: Replace a FIXME with a TRACE in d3d10_device_CreateSamplerState().
      d3d10: Use debugstr_a() on variable names in parse_fx10_object().
      wined3d: wined3d_device_set_sampler_state() never fails.
      wined3d: wined3d_device_get_sampler_state() never fails.
      wined3d: Implement version checks for geometry shaders.
      d3d10core: Add a missing return to d3d10_device_CreateGeometryShader().
      d3d10: Get rid of the unused idx_offset field from struct d3d10_effect_object.
      wined3d: wined3d_device_set_scissor_rect() never fails.
      wined3d: wined3d_device_get_scissor_rect() never fails.
      wined3d: Merge the glsl_vshader_private and glsl_pshader_private structures.
      d3d10: Properly cleanup shader variables.
      d3d10: Implement d3d10_effect_shader_variable_GetVertexShader().
      wined3d: wined3d_device_set_vertex_declaration() never fails.
      wined3d: Just return the declaration from wined3d_device_get_vertex_declaration().
      wined3d: Simplify shader_glsl_destroy() control flow a bit.
      d3d10: Implement d3d10_effect_shader_variable_GetGeometryShader().
      d3d10: Implement d3d10_effect_shader_variable_GetPixelShader().
      wined3d: wined3d_device_set_vertex_shader() never fails.
      wined3d: Just return the shader from wined3d_device_get_vertex_shader().
      wined3d: Take the data type of immediates into account in shader_glsl_get_register_name().
      d3d10: Store shaders directly in d3d10_effect_object.
      d3d10: Store shader variables in d3d10_effect_pass instead of d3d10_effect_object.
      wined3d: wined3d_device_set_pixel_shader() never fails.
      wined3d: Just return the shader from wined3d_device_get_pixel_shader().
      wined3d: Take the data type of registers into account in the GLSL shader backend.
      d3d10: Properly handle arrays of state objects.
      d3d10: Introduce a state object variable structure.
      wined3d: wined3d_device_set_texture_stage_state() never fails.
      wined3d: wined3d_device_get_texture_stage_state() never fails.
      wined3d: Add some basic SM4 bytecode dumping code.
      d3d10: Use a union to store effect variable data instead of a void pointer.
      d3d10: Implement d3d10_effect_blend_variable_GetBlendState().
      wined3d: Just return the texture from wined3d_device_get_texture().
      wined3d: wined3d_device_set_software_vertex_processing() never fails.
      wined3d: Introduce a separate function to retrieve the GLSL variable prefix.
      winex11: Fullscreen windows are never maximized.
      winex11: Handle a NULL cursor clipping rect the same as a fullscreen rect.
      winex11: Use the first active CRTC as primary if no primary is explicitly set.
      wined3d: Unify GLSL input / output variable naming.
      wined3d: Set more accurate limits for SM4 shaders.

Huw Davies (11):
      comdlg32: Move all of the win 3.1 style functionality into the same file.
      comdlg32: Only copy the valid portion of the structure.
      comdlg32: Make the unicode copy the same size as the ansi version.
      comdlg32/tests: Explicitly set the structure size to the nt40 version size.
      commdlg: Set the nt40 version size.
      include: Add missing structure members.
      comdlg32: Copy additional structure members if present.
      comdlg32: Add structure size checks.
      comctl32: Forward the focus to the edit control if it exists.
      comdlg32: Use the window handle to send messages to the filename control.
      comdlg32: Use a ComboBoxEx control for the filename if the structure size is not the nt40 version size.

Jacek Caban (67):
      jscript: Added new variable representation and use it for internal function return values.
      jscript: Use jsval instead of VARIANT to pass arguments to builtin functions.
      jscript: Use jsval_t instead of VARIANT for stack values.
      jscript: Store jsdisp_t values as jsval_t instead of VARIANT.
      jscript: Store exception value as jsval_t instead of VARIANT.
      jscript: Always use jsval-based to_primitive.
      jscript: Always use jsval-based to_boolean.
      jscript: Always use jsval-based to_number implementation.
      jscript: Always use jsval-based to_uint32 implementation.
      jscript: Always use jsval-based to_string implementation.
      jscript: Always use jsval-based to_object implementation.
      jscript: Store regexp last_index value as jsval.
      jscript: Get rid of no longer needed VARIANT helpers.
      jscript: Store Boolean object's value as BOOL instead of VARIANT_BOOL.
      jscript: Return BOOL instead of VARIANT_BOOL from jsdisp_is_own_prop.
      jscript: Use BOOL instead of VARIANT_BOOL in a few more places.
      jscript: Use BOOL instead of VARIANT_BOOL in lexer.
      jscript: Use helper to access jsval_t type.
      jscript: Don't assume that undefined variable is zeroed.
      jscript: Avoid direct access to jsval_t struct.
      msi: Choose the right IActiveScriptParse* interface based on process type.
      msi: Make script Session object visible by name.
      vbscript: Fixed parsing if statements with empty body.
      vbscript: Added Len implementation.
      vbscript: Added support for do..loop statement without an expression.
      vbscript: Added ScriptDisp::GetIDsOfNames implementation.
      vbscript: Added ScriptDisp_Invoke implementation.
      vbscript: Return error for unsupported flags in ScriptDisp::InvokeEx.
      jscript: Store exception value in script_ctx_t instead of passing it everywhere.
      jscript: Don't store jsexcept_t in exec_ctx_t.
      jscript: Pack jsval_t to 64-bit structure on i386.
      oleaut32: Properly handle TKIND_ALIAS when looking for iface GUID.
      mshtml: Fixed NULL event_obj handling in fire_event_obj.
      jscript: Added support for RegExp.$* properties.
      jscript: Get rid of unused hres.
      mshtml: Don't do anything in handle_htmlevent if document is already detached.
      include: Added uiautomationcore.idl.
      include: Added uiautomation.h.
      mshtml: Use IUri as base URL in navigate_url.
      itss: Canonicalize relative paths before resolving object.
      atliface.idl: Added IRegistrarBase declaration.
      jscript: Fixed conversion in place in IVariantChangeType::ChangeType.
      mshtml: Added support for overriding builtin functions.
      mshtml: Added function overriding tests.
      mshtml: Use custom VT_BSTR to VT_BOOL conversion in InvokeEx implementation.
      mshtml: Added IHTMLDocument::get_charset implementation.
      jscript: Added support for limit argument in String.split.
      jscript: Properly invoke regexp matching in String.split.
      mshtml: Added DISPATCH_PROPERTYGET|DISPATCH_METHOD flags support for elements exposed as window properties.
      mshtml: Return S_OK in plugin host's CanInPlaceActivate implementation.
      vbscript: Added Space() implementation.
      include: Added uiautomationclient.idl.
      vbscript: Added Round implementation.
      vbscript: Added VT_R8 support to to_int.
      activscp.idl: Added IActiveScriptSiteUIControl declaration.
      vbscript: Added MsgBox implementation.
      vbscript: Added MsgBox tests.
      mshtml: Added better IActiveScriptSiteWindow implementation.
      mshtml: Added IActiveScriptSiteUIControl implementation.
      mshtml: Added IActiveScriptSiteUIControl tests.
      include: Added uiautomationcoreapi.h.
      vbscript: Added WeekDayName implementation.
      vbscript: Added MonthName implementation.
      vbscript: Added Now() implementation.
      vbscript: Added StrReverse implementation.
      vbscript: Fixed copy&paste typo in invoke_builtin.
      hhctrl.ocx: Get rid of no longer needed hack.

Jason Edmeades (5):
      cmd: Fix parameterization around delimiters.
      cmd: Add circumflex support into command shell.
      cmd: Support for ^ character at end of line.
      cmd: Echo back command with whitespace removed first.
      cmd: Display 'set' sort ordering correctly.

Józef Kucia (5):
      d3dx9: Introduce a function for calculating the expected size of a DDS file.
      d3dx9: Use 4 spaces per indent level in get_image_info_from_dds().
      d3dx9: Implement the support for saving a surface to a DDS file.
      d3dx9/tests: Add a more detailed test for saving a surface to a DDS file.
      d3dx9: Implement conversion from D3DFORMAT to DDS pixel format for RGB pixel formats.

Jörg Höhle (1):
      winmm: The "open new ..." MCI string command sets an empty OPEN_ELEMENT.

Ken Thomases (1):
      winex11: Avoid a redundant TRACE.

Marcus Meissner (4):
      mshtml: Print initialized anchor (Coverity).
      propsys: PropVariantClear does not clear on uninitialized values (Coverity).
      dinput: Added a missing close(fd) in disabled case (Coverity).
      shlwapi: Fixed incorrect buffer size.

Matteo Bruni (27):
      d3dcompiler: Parse swizzles.
      d3dcompiler: Postincrement/decrement expressions are const.
      d3dcompiler: Stub D3DDisassemble.
      d3dcompiler: Declare predefined data types.
      d3dcompiler: Don't write the shader version tag from the header backend function.
      d3dcompiler: Only a few modifiers are relevant in type comparison.
      d3dcompiler: Parse "return" statement.
      d3dcompiler/tests: Use a reasonable adapter format in CheckDeviceFormat().
      d3dcompiler: Parse "if/else" statement.
      d3dcompiler: Store data types in a RB tree for faster search.
      d3dcompiler: Parse "typedef" statement.
      d3dcompiler: Support simple variable initializers.
      d3dcompiler: Parse casts.
      d3dcompiler: Allow casts to arrays.
      d3dcompiler: Parse "while" loops.
      d3dcompiler: Parse "do-while" loop.
      d3dcompiler: Parse "for" loops without variable declarations.
      d3dcompiler: Parse "for" loops with declarations.
      d3dcompiler: Move variables declaration to a separate function.
      d3dcompiler: Parse structure declarations.
      d3dcompiler: Also free the list itself in free_instr_list().
      d3dcompiler: Store the pointer to the struct field in the dereference node.
      d3dcompiler: Handle simple struct initializers.
      d3dcompiler: Fix freeing function.
      d3dcompiler: Parse struct dereferences.
      d3dcompiler: Parse struct typedefs.
      d3dcompiler: Parse array indexing expressions.

Michael Stefaniuc (9):
      ntdll/tests: Fix a memory leak (Smatch).
      urlmon: Don't generate unreachable break after return (Smatch).
      mshtml: Fix a memory leak on an error path (Smatch).
      dsound: Improve the IDirectSoundCaptureBuffer::GetObjectInPath stub.
      dsound/tests: Avoid a crash on a Win2k box.
      user32: Remove superfluous function pointer casts.
      shell32/tests: Use the explicit type for a function pointer.
      dsound: Don't bother shrinking the secondary buffer list.
      dsound: DirectSoundDevice_RemoveBuffer() cannot fail.

Nikolay Sivov (22):
      msxml3: Implemented IConnectionPoint_Advise for document object.
      po: Update Russian translations.
      mlang: Added IMLangConvertCharset stub.
      mlang: Store source and destination codepage ids in IMLangConvertCharset_Initialize.
      mlang: Implement get source/dest codepages for IMLangConvertCharset.
      mlang: Implemented IMLangConvertCharset_DoConversionToUnicode.
      mlang: Move IUnknown implementation to IMultiLanguage3 interface implementation and forward to it.
      mlang: Forward GetNumberOfCodePageInfo() to IMultiLanguage3 implementation.
      mlang: Forward GetFamilyCodePage() to IMultiLanguage3 implementation.
      mlang: Forward IsConvertible() to IMultiLanguage3 implementation.
      mlang: Forward GetRfc1766FromLcid() to IMultiLanguage3 implementation.
      mlang: Ignore MLCONVCHARF_USEDEFCHAR in IMLangConvertCharset_Initialize().
      mlang: Implement IMLangConvertCharset_DoConversionFromUnicode().
      mlang: Forward ConvertString() to IMultiLanguage3 implementation.
      mlang: Forward ConvertStringToUnicode() to IMultiLanguage3 implementation.
      mlang: Forward ConvertStringReset() to IMultiLanguage3.
      mlang: Forward GetLcidFromRfc1766() to IMultiLanguage3 implementation.
      mlang: Forward ConvertStringFromUnicode() to IMultiLanguage3 implementation.
      mlang: Use proper interface call instead of implementation function.
      mlang: Move GetFontCodePages() code to IMLangFontLink2 and forward to it.
      mlang: Mode CodePagesToCodePage() code to IMLangFontLink2 and forward to it.
      dwrite: Added IDWriteTextLayout stub.

Nozomi Kodama (4):
      d3dx9: Simplify D3DXComputeBoundingSphere.
      d3dx9: Simplify D3DXVector*Normalize.
      d3dx9: Implement D3DXSHEvalDirectionalLight.
      d3dx9: Implement D3DXSHRotate.

Per Johansson (2):
      winemenubuilder: Don't treat empty string as a valid icon file name.
      winemenubuilder: Correct InvokeShellLinkerForURL return value.

Piotr Caban (34):
      msvcp90: VTBL_WRAPPER(60) is unused so remove it.
      msvcp100: Removed unused functions.
      msvcp80: Make some internal variables static.
      msvp71: Copy source files from msvcp90.
      msvcp71: Fixed ctype class virtual functions table.
      msvcp71: Fixed basic_streambuf virtual functions table.
      msvcp71: Don't forward _Getcat functions to msvcp80.
      msvcp71: Updated spec file.
      msvcp71: Removed unused functions.
      wininet: Don't define DELETED_CACHE_ENTRY in public headers.
      wininet: Delete file when cache entry is deleted.
      wininet: Unlock urlcache entries that were locked for over a day.
      wininet: Added support for cache entries overwriting.
      wininet: Set entry type based on container type.
      wininet/tests: Remove all temporary files.
      wininet: Define more fields in urlcache header structure.
      wininet: Added support for leaked urlcache entries handling.
      wininet: Don't delete files that were modified after adding to cache.
      wininet: Call FreeUrlCacheSpaceW when cache is full.
      wininet: Improved FreeUrlCacheSpaceW implementation.
      wininet: Stop urlcache clearing when dll is being unloaded.
      wininet: Update used blocks count when block is allocated or freed.
      wininet: Reserve more space for urlcache entry flags.
      wininet: Added tests for entries with identical hash key.
      wininet: Added support for cache path parameter in FreeUrlCacheSpace function.
      wininet: Added support for cache containers without subdirectories.
      wininet: Move GetUrlCacheEntryInfoA code to GetUrlCacheEntryInfoExA function.
      wininet: Fixed handling of GET_INSTALLED_ENTRY flag in GetUrlCacheEntryInfoA.
      wininet: Fixed handling of GET_INSTALLED_ENTRY flag in GetUrlCacheEntryInfoW.
      wininet: Ignore unsupported flags in GetUrlCacheEntryInfoEx functions.
      wininet: Added more GetUrlCacheEntryInfo tests with GET_INSTALLED_ENTRY flag.
      inetcpl.cpl: Added support for clearing cookies and history cache.
      wininet: Don't ask for confirmation while deleting cache directory.
      wininet: Delete cache directory when cache version doesn't match.

Qian Hong (1):
      iphlpapi: Set DhcpEnabled to TRUE for all interfaces.

Rico Schüller (19):
      winex11.drv: Remove unneeded include file.
      d3dx9: Handle D3DXPT_VOID in get_float/bool/int().
      d3dx9: Fix shader constant byte calculation.
      d3dx9: Improve RegisterCount calculation for D3DXRS_INT4/BOOL.
      d3dx9: Use float functions in D3DXSHRotateZ().
      d3dx9: Use float functions in D3DXQuaternionSlerp().
      d3dx9: Use float functions in D3DXQuaternionRotationYawPitchRoll().
      d3dx9: Use float functions in D3DXQuaternionRotationAxis().
      d3dx9: Avoid variable assignment in D3DXQuaternionNormalize().
      d3dx9: Use float functions in D3DXQuaternionLn().
      d3dx9: Use float functions in D3DXQuaternionRotationMatrix().
      d3dx9: Use float functions in D3DXQuaternionExp().
      include/d3dx9math.inl: Use float functions.
      d3dx9: Use float function in D3DXPlaneNormalize().
      d3dx9: Use float function in D3DXFresnelTerm().
      d3dx9: Improve D3DXMatrixAffineTransformation2D().
      d3dx9: Improve D3DXMatrixAffineTransformation().
      d3dx9: Use float functions in D3DXMatrixRotationAxis().
      d3dx9: Improve traces for D3DXSHMultiply2/3().

Ričardas Barkauskas (5):
      wined3d: Don't leave leftover textures when destroying and creating dxgi swapchains.
      dxgi: Partially implement IDXGISwapChain_GetDesc.
      dxgi: Avoid division by zero.
      dxgi/tests: Test IDXGISwapChain_CreateSwapchain and IDXGISwapChain_GetDesc a bit.
      msvcp80: Use LoadLibraryA as msvcp90 might not yet or ever be loaded.

Thomas Faber (1):
      rpcrt4: Match MSVC version of call_server_func with GCC.

Vincent Povirk (4):
      gdiplus: Implement LineCapSquare in GdipWidenPath.
      gdiplus: Properly set the first point to start when widening open figures.
      gdiplus: Implement LineCapRound in GdipWidenPath.
      windowscodecs: Use WINCODEC_ERR_UNSUPPORTEDOPERATION in GetColorContexts stubs.

--
Alexandre Julliard
julliard@winehq.org
