The Wine development release 1.5.16 is now available.

What's new in this release (see below for details):
  - New version of the Mono package.
  - Many improvements to the CMD command-line parser.
  - More stream classes in the C++ runtime.
  - Support for managing services in WMI.
  - Improved CPU detection.
  - Various bug fixes.

The source is available from the following locations:

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

   7933  c-evo doesnt play mp3 then has access violation
   8667  Number of subitems in treeview keeps increasing
  12069  native msvcp60.dll enhaces wines
  15336  DirectInputCreate(): hInst is ignored; NULL value doesn't result in an error.
  15510  Rockwell check for OS fails
  15539  quartz: referencemapper.ok sometimes fails in pc-bsd (race condition?)
  16366  A Vampyre Story (Demo) crashes
  17849  Tree doesn't fold/unfold on mouse click
  19215  Dragon NaturallySpeaking 10 Standard crashes performing Language Model Optimization
  19457  Starfleet Command graphics distorted (lacking transparency)
  19935  Colobot game don`t work
  20213  AutoCAD 2009: Cross-hair leaves trace on drawing sheet
  20773  Borderlands can't get install correctly
  21046  cmd does not handle all operators in 'if' command
  21321  Machines: crash when starting any scenario
  21381  call + builtin cmd.exe command doesn't work
  22266  some text disappears after several minutes in Qt Dominate
  22556  Raisonance Ride7 IDE - hangs (with high CPU usage) when attempting to exit
  22786  ALLPlayer crashes
  22921  Ship Simulator 2008 demo freezes when starting a mission if builtin msvcr71 is used
  22929  "Path not found" error prevents NCLauncher from updating itself to latest
  23071  UltraEdit 16.10 : Fails to update itself
  23402  AMD Demo - Whiteout requires d3dx10_33.dll
  23591  EditPadPro: Access violation when using function navigator with mouse double-click
  24143  TGA image is not visible in Layered Windows Demo
  24395  Gratuitous Space Battles demo crashes with ERROR - FMOD[Failed to getDriverCaps]
  24638  UTAU singing voice synthesizer fails to generate wav file
  24707  RobotZ DX freezes just after you start a level
  24896  Lord of the Rings Online crashes at startup
  25440  Guitar Pro 6 fails to start
  25489  GLC_Player: Fails to start
  26430  Post Mortem quits before reaching the main menu
  26911  Command & Conquer Tiberian Sun: no sound in skirmish mode without dsound emulation?
  26943  copy command has different behaviour
  27218  virtualbox needs ntoskrnl.exe.IoAcquireRemoveLockEx
  27304  QQMusic2011 close with serious error
  27430  1.3.20 breaks X52 Joystick under X3/Terran Conflict
  27569  Shellexecute and local file
  27899  copy multiple file in parameter using '+' return error
  27983  Starcraft 2 Editor: Newly created items in the trigger treeview don't get marked for renaming.
  27996  Oblivion 1.2.0416: Flickering grass, magic and flickering trees
  28058  Psychonauts installer by R.G. Mechanics can not convert ogg-files to wav during installation
  28325  Dragon NaturallySpeaking 11.0 Standard no longer completes user training successfully
  28382  Dragon NaturallySpeaking 11.0 does not run
  29423  CCleaner hides cleaner rules by default
  30282  treeview: OnExpanding is incorrectly sent to items with no children
  30436  Iexplore crashes http://foreca.fi
  30878  ArtRAge 2.6 won't start up full-screen
  30907  RebelBetting fails to load
  31522  Microsoft SQL Server Management Studio Express 2005: cannot control server service (needs implemented wbem_services_ExecMethod infrastructure)
  31524  Microsoft SQL Server Management Studio Express 2005: cannot control server service (needs Win32_Service.*Service methods)
  31560  NetworkView forkbombs on startup
  31570  Intellicad Viewer needs msvcp71.dll.??1istrstream@std@@UAE@XZ
  31575  XLN Online Installer complains Javascript not supported
  31576  XLN Online Installer with native IE7 can't log in
  31673  SimRaceway Update Service hangs after CommitUrlCacheEntryInternal
  31794  XCOM: Enemy Unknown demo needs KERNEL32.dll.GetFileInformationByHandleEx
  31813  Jamestown input (rawinput) still doesn't work
  31831  WinUAE cannot find any raw input devices (GetRawInputDeviceList stub)
  31835  iexplore: endless fixme:mshtml:HTMLFrameBase_put_name on radio monaco
  31875  poor error output of cmd when trying to execute a non exist program
  31925  Project Black Sun demo quits unexpectedly when starting a new game (without native msvcp100)
  31930  QQ2011 installer crash at unimplemented msvcp60.dll.?getline@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
  31931  Stunt GP Demo: Wrong display mode set
  31944  Steam in XFCE: You can maximise Steam with its own maximise button, but you can only unmaximise it from the window list.
  31948  Divinity II: The Dragon Knight Saga won't start with built-in msvcp90
  31953  regedit crashes when renaming the HKEY_XXX keys
  31956  XCOM: Enemy Uknown crashes on first level
  31964  Artrage 2 Starter Edition: cursor invisible while drawing
  32011  Hitman 2: problem with rendering models
  32015  Systray icons are invisible
  32020  Black Mirror 2 crashes after a short time
  32027  Chrome (game) refuses to start without native msvcp60
  32028  Swords and Soldiers fails to start without native msvcp80 (purist)
  32032  CS:GO exits silently
  32035  Deity spams the terminal with '|'
  32041  Adobe Audition CS6 - Crash during UI paint at startup (again)

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

Changes since 1.5.15:

Akihiro Sagawa (3):
      cmd: Properly handle multibyte characters in batch files.
      ntdll: Add ReturnLength test for NtQuerySystemInformation with SystemProcessInformation.
      ntdll: Calculate SystemProcessInformation's ReturnLength and return it.

Alexandre Julliard (36):
      user32: Flush window surfaces in all functions that are used to poll for input.
      winex11: Remove the no longer needed GetAsyncKeyState entry point.
      gdi32: Always return the full DIB surface in GetImage and adjust coordinates accordingly.
      winex11: Move the icon window off-screen for managed windows.
      user32: Don't show the icon title for off-screen icons.
      winex11: Get rid of the __wine_x11_managed property.
      user32: Delay message spying initialization until needed.
      gdi32: Store the object type directly in the GDI handle table.
      gdi32: Store the object function table directly in the GDI handle table.
      gdi32: Store the HDC list directly in the GDI handle table.
      gdi32: Process the object HDC list outside of the critical section.
      gdi32: Store the object selection count directly in the GDI handle table.
      gdi32: Store the object flags directly in the GDI handle table.
      gdi32: Get rid of the RGNOBJ type, instead store a pointer to the region itself.
      gdi32: Get rid of the METAFILEOBJ type, instead store a pointer to the metafile data.
      gdi32: Get rid of the GDIOBJHDR type.
      server: Fix propagation of the pixel format flag when the parent window is changed.
      gdi32: Add a generation count in the high word of GDI handles.
      user32: Don't free a clip region twice.
      winex11: Don't delete the DC if it's not for a valid pbuffer.
      comctl32/tests: Don't delete the global font object.
      oleaut32/tests: Delete the correct object in the icon test.
      gdi32/tests: Avoid deleting invalid objects.
      user32/tests: Don't release a random DC handle.
      winex11: Never use a surface for embedded windows, even for the parents.
      gdi32: Update the ref count of stock objects when deleting a DC.
      winex11: Remove some remainders of the ddraw HAL support.
      explorer: Remove support for the old-style X11 desktop configuration key.
      gdi32: Export a function to retrieve the module handle of the graphics driver for a DC.
      user32: Retrieve the graphics driver module from gdi32.
      Revert "winex11: Refuse to set the pixel format for HWND_MESSAGE windows."
      fusion/tests: Remove a broken macro.
      gdi32: Remove an unused DC field.
      gdi32: Add a DC hook flag to reset the DC state.
      winex11: Ignore WM_PAINT for layered system tray icons.
      gdi32: Fix mapping of symbol font glyphs even when no encoding is specified.

André Hentschel (32):
      vcomp: Sync spec files.
      d3drm: Fix memcpy arguments for matrix transformations (coverity).
      view: Buffer size of GetFileTitleW is in characters, not bytes (coverity).
      winedbg: Buffer size includes the quotes (coverity).
      winedbg: Fix check for register number (coverity).
      wing32: Use the correct size for memcpy (coverity).
      wing32: Use the correct size for memcpy (coverity).
      atl: Warn when CoRegisterClassObject fails.
      gdiplus/tests: Fix out-of-bounds access (coverity).
      ntdll/tests: Remove duplicate function prototypes (coverity).
      msi/tests: Make multiline macros blocks (coverity).
      usp10: Add missing break in switch (coverity).
      d3dx9_36/tests: Fix sizeof to be more portable (coverity).
      d3d9/tests: Fix copy-paste error (coverity).
      cryptdlg: Fix copy-paste error (coverity).
      gdi32: Fix copy-paste error (coverity).
      windowscodecs: Fix copy-paste error (coverity).
      netapi32: Fix copy-paste error (coverity).
      rpcrt4: Fix copy-paste error (coverity).
      ieframe: Check for null before dereferencing it (coverity).
      gameux: Avoid double free (coverity).
      browseui: HeapFree after deleting the cs (coverity).
      gdiplus: Fix order of GdipFrees (coverity).
      windowscodecs: Fix resource leak (coverity).
      d3dx9_36: Fix free of address-of expression (coverity).
      gdi32: Fix free of address-of expression (coverity).
      iphlpapi: Close socket on failed HeapAlloc (coverity).
      cabinet: Reorder code to make sure str is freed (coverity).
      comdlg32: Free tmp_files after it's used (coverity).
      d3dcompiler_43: Free assignment on error (coverity).
      d3dx9_36: Free object on error (coverity).
      winedbg: Cleanup if gdb startup fails (coverity).

Aric Stewart (2):
      imm32: Switch the value of IMMGWL_IMC in the UI window when a new imc opens.
      winemenubuilder: Scale 64x64 classic icons to 128x128 for Icns format.

Christian Costa (20):
      amstream: Get rid of (IBaseFilter*) casts.
      amstream: Cleanup MediaStreamFilterImpl_QueryInterface.
      amstream: Implement BasePinImpl_CheckMediaType in media stream filter.
      amstream: Implement BasePinImp_GetMediaType in media stream filter.
      dinput: Replace FIXMEs by TRACEs in dump function.
      ntoskrnl.exe: Add stub for IoAcquireRemoveLockEx.
      kernel32: Implement FileNameInfo in GetFileInformationByHandleEx.
      qcap: Remove useless FIXME.
      amstream: Specifying a stream object in params is not yet supported.
      krnl386.exe: Implement INT 33h function 15h.
      d3dxof: Display new ref count in AddRef & Release.
      d3drm: Fix wrong condition.
      d3drm: Fix child leak.
      d3drm: Enum all materials even if only the first one is handled.
      d3drm: Fix normals computation and add according tests.
      d3dxof/tests: Document dump function and rename X files with .x extension.
      krnl386.exe: If we use operands order of AT&T asm syntax, we'd better use % for registers as in winedbg and GNU assembler to avoid confusion.
      d3dxof: Fix remaining 'objects.txt' filename.
      d3drm: When creating a mesh, if all faces have the same number of vertex, set vertex_per_face and don't put nb indices in face data.
      krnl386.exe: Display FIXME instead of ERR for instructions that are not well implemented.

Dan Kegel (2):
      vcomp: No-op stub for _vcomp_barrier.
      vcomp: No-op stubs for _vcomp_single_begin, _vcomp_single_end.

Daniel Jelinski (5):
      comctl32: Allow expanding/collapsing treeview nodes multiple times.
      comctl32: Do not send TVN_ITEMEXPANDING when expanding item with no children.
      comctl32: Fix notifications and return value when collapsing already collapsed node.
      comctl32/tests: Expanding/collapsing a node always sends associated messages.
      regedit: Disallow editing root key names.

Daniel Lehman (10):
      msvcp: Sync num_get<>::_Getifld.
      msvcp90: Fix num_get<>::_Getffld.
      msvcp: Free facet and _Locimp in Locimp dtor.
      msvcp90: In num_put, use default precision of 6 if 0 and not fixed.
      msvcp: Sync num_put<> put_double.
      msvcp90: Set failbit at end of istream<>::sentry::_Ipfx.
      msvcp90: Set state at end of istream<>::ignore.
      msvcp: Sync istream<>::_ignore.
      msvcp90: In istream::seekg, don't use sentry and clear state.
      msvcp: Sync istream<>::seekg implementations.

Detlef Riekenberg (2):
      dsound/tests: Handle broken E_FAIL in dsound8 for AC97.
      dsound/tests: Handle broken E_FAIL of broken AC97 driver.

Dmitry Timoshkov (5):
      user32: Make sure that window's normal_rect is initialized at window creation time.
      gdiplus: Fix a typo leading to incorrect character width calculation in GdipMeasureDriverString.
      gdiplus: Test also lf.lfEscapement and lf.lfOrientation returned by GdipGetLogFont.
      gdiplus: Move internal helper get_log_fontW() out of public GdipGetLogFontW() export.
      gdiplus: GdipGetLogFont should use device scale and transform when appropriate.

Francois Gouget (7):
      d3dcompiler_43: Make free_function{_decl}() static.
      user32/tests: Add a trailing '\n' to an ok() call.
      shell32/tests: Fix a test_argify() check that fails on NT4 and Windows 2000.
      msvcp100: Make MSVCP_basic_string_char_append_len_ch() static.
      wined3d: Add a trailing '\n' to a Wine trace.
      shell32: Standardize on the ShellExecuteEx() terminology.
      Assorted spelling tweaks and fixes.

Frédéric Delanoy (18):
      cmd/tests: Add tests for LSS comparison operator in "if" statements.
      cmd/tests: Add tests for LEQ comparison operator in "if" statements.
      cmd/tests: Add tests for EQU comparison operator in "if" statements.
      cmd/tests: Add tests for NEQ comparison operator in "if" statements.
      cmd/tests: Add tests for GEQ comparison operator in "if" statements.
      cmd/tests: Add tests for GTR comparison operator in "if" statements.
      cmd/tests: Add tests for mixed number/stringified numbers comparisons in "if" statements.
      cmd: Correctly set the 'raw' parameter in calls to WCMD_parameter in WCMD_if.
      cmd: Get rid of longer needed 'end' parameter in WCMD_parameter.
      cmd: Move common error reporting code in WCMD_if.
      cmd: Avoid using strstr to match == operator in WCMD_if.
      cmd: Add support for LSS comparison operator in if statements.
      cmd: Add support for LEQ comparison operator in if statements.
      cmd: Add support for EQU comparison operator in if statements.
      cmd: Add support for NEQ comparison operator in if statements.
      cmd: Add support for GEQ comparison operator in if statements.
      cmd: Add support for GTR comparison operator in if statements.
      cmd: Display a clearer error message for not found commands.

Hans Leidekker (16):
      wbemprox: Implement StdRegProv.GetStringValue.
      wbemprox: Pass an object instance to class methods.
      wbemprox: Keep a reference to the table from uncommitted instances.
      wbemprox: The last parameter to IWbemClassObject::GetMethod is optional.
      wbemprox: Implement Win32_Service.PauseService.
      wbemprox: Implement Win32_Service.ResumeService.
      wbemprox: Implement Win32_Service.StartService.
      wbemprox: Implement Win32_Service.StopService.
      wbemprox: Add tests for Win32_Service methods.
      mapi32: Forward WrapCompressedRTFStream to the registered provider, if any.
      credui: Show the save password checkbox if both CREDUI_FLAGS_DO_NOT_PERSIST and CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX are specified.
      credui: Don't save credentials if CREDUI_FLAGS_DO_NOT_PERSIST is specified.
      credui: Don't show a dialog if existing credentials can be found.
      advapi32: Only require a domain in the username for CRED_PERSIST_ENTERPRISE credentials.
      winhttp: Pass the redirect policy setting down to request objects.
      winhttp: Respect the redirect policy setting.

Henri Verbeet (50):
      wined3d: Use the correct relative address for constant buffers in the GLSL shader backend.
      wined3d: Recognise SM4 scalar swizzles.
      wined3d: Use a common function for parsing SM4 source and destination parameters.
      wined3d: Introduce a structure for shader register indices.
      wined3d: Handle SM1 comments in the frontend.
      wined3d: Explicitly check the shader type in shader_glsl_texldl().
      wined3d: Explicitly check the shader type in shader_glsl_mov().
      wined3d: Recognise the SM4 "primID" register type.
      ddraw: Get rid of some fallback code in CreateSurface().
      ddraw: Just implement ddraw7_RestoreDisplayMode() on top of wined3d_set_adapter_display_mode().
      wined3d: Handle WINED3DSPR_PRIMID in the GLSL shader backend.
      ddraw: Prevent mode changes when a different ddraw object is in exclusive mode.
      ddraw: Only restore the display mode if we changed it.
      ddraw: When restoring the display mode, use the mode set before the first mode change on any ddraw object.
      ddraw/tests: Add some display mode set / restore tests with multiple ddraw objects.
      wined3d: Explicitly check the shader type in shader_glsl_gen_sample_code().
      wined3d: Explcitly check the shader type in shader_glsl_get_sample_function().
      wined3d: Implement WINED3DSIH_UDIV in the GLSL shader backend.
      wined3d: Implement WINED3DSIH_USHR in the GLSL shader backend.
      user32: Implement GetRawInputDeviceList().
      wined3d: Explicitly check the shader type in shader_glsl_get_register_name().
      wined3d: Explicitly check the shader type in shader_glsl_load_constantsF().
      wined3d: Implement WINED3DSIH_ROUND_NI in the GLSL shader backend.
      wined3d: Merge most of the code for shader_glsl_cmp() and shader_glsl_cnd().
      user32: Implement GetRawInputDeviceInfoW().
      wined3d: Also read comments in shader_sm1_is_end().
      wined3d: Use shader_glsl_get_prefix() in shader_glsl_gen_sample_code().
      wined3d: Merge a couple of shader type specific blocks in shader_generate_glsl_declarations().
      wined3d: Implement WINED3DSIH_MOVC in the GLSL shader backend.
      user32: Implement GetRawInputDeviceInfoA().
      wined3d: Explicitly check the shader type in shader_generate_glsl_declarations().
      wined3d: Move shader_is_pshader_version() and shader_is_vshader_version() to the ARB program shader backend.
      include: Add the D3DDisassemble() prototype and flags.
      wined3d: Get rid of the mostly unused "num_textures_used" field from arbfp_ffp_desc.
      d3dx9: Avoid LPDIRECT3DPIXELSHADER9.
      d3d10: Implement D3D10DisassembleShader().
      wined3d: Set texture_level in surface_set_texture_target() as well.
      wined3d: Remove some dead code from gen_ffp_instr().
      d3dx9: Avoid LPDIRECT3DVERTEXSHADER9.
      d3dx9: Avoid LPDIRECT3DVOLUMETEXTURE9.
      ddraw: Move the mipmap desc fixup code to ddraw_surface_create_texture() from device_parent_create_texture_surface().
      wined3d: Replace the face and level parameters to device_parent_create_texture_surface() with the sub-resource index.
      wined3d: Make the shader backend responsible for controlling the fixed function fragment pipe.
      d3dx9: Avoid LPDIRECT3DCUBETEXTURE9.
      d3dx9: Avoid LPDIRECT3DTEXTURE9.
      d3dx9: Avoid LPDIRECT3DBASETEXTURE9.
      d3dx9: Avoid LPDIRECT3DINDEXBUFFER9.
      d3dx9: Avoid LPDIRECT3DVERTEXBUFFER9.
      winealsa: Avoid depending on ddraw.h.
      winex11: Avoid depending on ddraw.h.

Huw Davies (9):
      gdi32: Make get_glyph_bitmap return a dib_info structure in order to avoid code duplication.
      fonts: 10-pixel strikes for Tahoma.
      gdi32: Pass a dib_info structure to draw_glyph.
      gdi32: Pass individual x, y co-ords to draw_glyph rather than a POINT.
      gdi32: Use the helper to draw the glyphs.
      gdi32: Move the string rendering code to a common function.
      fonts: 10-pixel strikes for Tahoma bold.
      gdi32: Simplify the code for charmap selection.
      gdi32: Use a symbol charmap if all else fails.

Jacek Caban (47):
      vbscript: Added Chr implementation.
      mshtml: Added IHTMLLinkElement stub implementation.
      mshtml: Added IHTMLLinkElement::disabled property implementation.
      mshtml: Added IHTMLLinkElement::rel property implementation.
      mshtml: Added IHTMLLinkElement::type property implementation.
      mshtml: Added IHTMLLinkElement::href property implementation.
      mshtml: Added IHTMLBodyElement::onload property implementation.
      mshtml: Moved HTMLScriptElement declaration to separated header.
      mshtml: Added beginning IHTMLScriptElement::put_src implementation.
      mshtml: Return early from BindToDocument if possible.
      mshtml: Added support for IHTMLScriptElement::put_src calls during parser callback.
      mshtml: Added support for IHTMLScriptElement::put_src on detached elements.
      mshtml: Added IHTMLScriptElement::put_src tests.
      mshtml: Fixed tests on old IEs.
      vbscript: Pass arguments to builtin functions in natural order.
      vbscript: Allow specifying simple builtin constants without proper getter.
      vbscript: Use simplified builtin constants for more constants.
      mshtml: Added HTMLImgElement::onabort implementation.
      mshtml: Added IOmNavigator::onLine semi-stub.
      mshtml: Use detach_inner_window in release_inner_window.
      mshtml: Make HTMLInnerWindow the owner of timers.
      mshtml: Moved remove_target_tasks to detach_inner_window.
      mshtml: Fixed trace message.
      mshtml: Added IHTMLImgElement::get_complete implementation.
      vbscript: Added support for HTML comments.
      vbscript: Added HTML comments tests.
      mshtml: Added HTML comments in VBScript code tests.
      jscript: Use jsstr_t for passing strings to regexp matching functions.
      mshtml: Properly handle OOM errors in task.c (coverity).
      mshtml: Properly handle OOM errors in script.c (coverity).
      mshtml: Properly handle OOM errors in omnavigator.c (coverity).
      mshtml: Properly handle OOM errors in nsio.c (coverity).
      mshtml: Properly handle OOM errors in navigate.c (coverity).
      mshtml: Properly handle OOM errors in htmlnode.c (coverity).
      mshtml: Fixed error handling of IBindCtx_GetObjectParam (coverity).
      mshtml: Fixed attribute object caching logic.
      mshtml: Added IHTMLLocation::toString implementation.
      mshtml: Set 'this' to window object for onload handlers.
      mshtml: Added more events tests.
      mshtml: Added IHTMLStyle::clear property implementation.
      mshtml: Added IHTMLIFrameElement::height property implementation.
      mshtml: Added IHTMLIFrameElement::width property implementation.
      mshtml: Get rid of no longer used painting fallback for missing Gecko.
      mshtml: Added IHTMLFrameBase::marginHeight property implementation.
      mshtml: Added IHTMLFrameBase::marginWidth property implementation.
      mshtml: Added IHTMLWindow2::onblur property implementation.
      jscript: Optimize object refcount handling.

James Eder (7):
      ntdll: Add support for cpuid on x86_64.
      ntdll: Add more feature detection in get_cpuinfo().
      ntdll: Handle CPU Level (family) as a vendor specific component.
      ntdll: Add detection for Revision in get_cpuinfo().
      ntdll: Add detection for PF_SSE_DAZ_MODE_AVAILABLE.
      ntdll: Use build-time API detection instead of OS detection for finding the number of processors.
      ntdll: Split up feature detection by architecture.

Jason Edmeades (21):
      cmd: Fix regression around prompting during copy.
      cmd: Rework parameter parsing for WCMD_Copy.
      cmd: Rework the body of WCMD_copy based on new parameter parsing.
      cmd: Fix some issues with ~ modifier expansion.
      cmd: Add suite of tests for the copy command.
      cmd: Support copy to an 'ascii' destination.
      cmd: Add full support for copy concatenation and ascii/binary.
      cmd: cmd /c "pgmname" searches all extensions on PATHEXT.
      cmd: Identify the program name using more appropriate parsing.
      cmd: %* expands to first non-whitespace delimiter of first arg.
      cmd: Handle very odd delimiter support for command line.
      cmd: Rename parameter passed to builtin calls.
      cmd: Add support for calling a built in command.
      cmd: Add support parsing for /f options and implement skip.
      cmd: Refactor building a list of directories out of WCMD_for.
      cmd: Use a common function for the string parsing in for /f.
      cmd: Implement support for for /f eol=c option.
      cmd: Add support for usebackq (for /f).
      cmd: Correct for /f string and command set handling.
      cmd: Strip quotes from for /f string before attempting to parse it.
      cmd: Add for /f delims= support.

Józef Kucia (5):
      d3dx9/tests: Only release a texture when it was created.
      d3dx9: Introduce a separate pixel format type for compressed pixel formats.
      d3dx9: Do not try to fill textures other than ARGB in fill texture functions.
      d3dx9/tests: Add tests for filling floating-point textures.
      d3dx9/tests: Add a simple test for filling compressed textures.

Jörg Höhle (4):
      mciseq: Correct MCI_SEEK return codes.
      mciseq: Fix some MCIERROR_* codes (MCI_STATUS).
      mciseq: Fix reading MCI_INFO_NAME and COPYRIGHT from MIDI file.
      mciseq: The code can only handle up to 128 MIDI tracks.

Ken Thomases (2):
      winemenubuilder: Use proper marker (negative index) for unused icon slot.
      winex11: Fix name of extension WGL_NV_render_texture_rectangle.

Maarten Lankhorst (4):
      ntdll: Set SO_PASSCRED before connecting to eliminate a race condition in obtaining server_pid.
      mmdevapi: Fix a broken test.
      winmm: Do not blindly reset device when already stopped.
      dsound: Fix IDirectSoundCaptureBuffer Start/Stop, with tests.

Marcus Meissner (6):
      kernel32: Buffer size is in characters (Coverity).
      winefile: Check index before buffer overread (Coverity).
      winex11.drv: Free bitmap info after being done (Coverity).
      shell32: Avoid memory leaking buf (Coverity).
      cryptnet: Avoid memory leak of info (Coverity).
      dbghelp: Size of the floating point stack registers is 10 bytes (Coverity).

Matteo Bruni (6):
      wined3d: Split GPU vendor and GL vendor handling in GPU recognition.
      wined3d: Improve a Nvidia GPU recognition fallback.
      wined3d: Add a D3D10-level fallback for Intel GPU recognition.
      wined3d: Provide a better fallback for D3D10 AMD GPUs.
      wined3d: Recognize AMD Radeon HD 5000 series GPUs on recent binary drivers.
      wined3d: Add new Radeon HD 6670 GL renderer string.

Michael Stefaniuc (3):
      jscript: Move 'inline' to the beginning of the declaration.
      user32: Remove redundant sizeof check.
      user32: Use FIELD_OFFSET to calculate the size of a struct with variable length array.

Nikolay Sivov (25):
      dwrite: Correct reference count behavior for font face interface.
      ole32: Fix debug output for user marshal flags.
      ole32: Cleanup IRpcChannelBuffer.
      ole32: Store destination context data in channel buffer.
      ole32: Store destination context and context data in server channel.
      ole32: Cleanup IMultiQI interface of proxy manager.
      ole32: Cleanup IMarshal interface of proxy manager.
      ole32: Cleanup IClientSecurity interface of a proxy manager.
      dwrite: Implement GetMetrics() for IDWriteFont.
      dwrite: Store text string in layout object.
      dwrite: Added a stub for IDWriteFontCollection.
      dwrite: Fix a stupid copy/paste typo in Release return value.
      dwrite: Add all installed font families to system font collection.
      dwrite: Implement FindFamilyName() for system font collection.
      dwrite: Keep a single instance of system font collection.
      dwrite: Implement IDWriteTextFormat::GetFontCollection().
      dwrite: Implement GetFontFamily() for system font collection.
      dwrite: Added basic GetFirstMatchingFont() for font family.
      dwrite: Separate format data and keep it in both layout and text format.
      dwrite: Implement some font properties accessors for IDWriteTextFormat.
      dwrite: Derive some format data for text layout from specified text format.
      dwrite: Partially implement IDWriteFontFace::GetGlyphIndices().
      dwrite: Keep string length in text layout.
      dwrite: Layout can't be created without text format.
      dwrite: Added GetLocaleNameLength/GetLocaleName for text format and layout.

Piotr Caban (26):
      msvcrt: Fixed tmpfile implementation.
      msvcp100: Added _Yarn<char> class implementation.
      msvcp100/tests: Added _Yarn<char> class tests.
      msvcp100: Store locale string in _Yarn<char> class.
      msvcp60: Added more std::getline functions.
      msvcp90: Fixed strstreambuf_ctor_get implementation.
      msvcp90: Added _Nomemory implementation.
      msvcp71: Added strstream class implementation.
      msvcp71: Added ostrstream class implementation.
      msvcp71: Added istrstream destructor implementation.
      msvcp71: Fixed basic_string::ptr implementation.
      msvcp60: Fixed overflow in basic_string_char_find_cstr_substr function.
      msvcp60: Fixed basic_stringbuf class structure.
      msvcp: Sync implementations.
      advapi32: Validate arguments in StartServiceCtrlDispatcher.
      advapi32: Return from StartServiceCtrlDispatcher when service status is changed to stopped.
      advapi32: Don't terminate service when its last thread has exited.
      services: Kill service thread after timeout so it can terminate cleanly.
      services: Added tests for service thread termination without setting service state to stopped.
      msvcp60: Copy correct number of characters in basic_string::_Grow.
      msvcrt: Fixed _ungetwc implementation.
      msvcp90: Convert characters to unsigned char before passing them to functions operating on integers.
      msvcp: Sync implementations.
      ieframe: Added CSS_NORESIZE style to toolbar window.
      ieframe: Handle rebar height changes.
      msvcp100: Fixed ios_base structure.

Qian Hong (7):
      gdi32/tests: Fixed broken value in bitmap font metrics on Japanese locale.
      gdi32/tests: Fixed broken bitmap font metrics test on CJK locales.
      gdi32/tests: Fixed broken value in bitmap font metrics on Arabic locale.
      gdi32/tests: Skip some broken bitmap font metrics tests on Arabic locale.
      gdi32/tests: Marked EnumFontFamiliesEx_default_charset test on Arabic locale as broken.
      gdi32/tests: Declared system_lang_id as a global variable.
      gdi32/tests: Fixed typo in localized name tests.

Rico Schüller (2):
      d3dx9: Fix calculation when in and out overlap in D3DXSHRotateZ().
      wined3d: Fix return value for WINED3DFMT_ATI2N in CheckTextureCapability().

Sergey Guralnik (1):
      user32: Add internal class small icons.

Thomas Faber (1):
      widl: Use 'class' for coclass typedefs in C++.

Vincent Povirk (2):
      mscoree: Update Wine Mono to 0.0.8.
      Revert "wine.inf: Add .NET keys to the 64-bit registry.".

--
Alexandre Julliard
julliard@winehq.org
