The Wine development release 1.3.31 is now available.

What's new in this release (see below for details):
  - BiDi text support in the single-line edit control.
  - Support for StretchDIBits and AlphaBlend in the DIB engine.
  - A number of audio fixes.
  - VBScript improvements.
  - Various bug fixes.

The source is available from the following locations:

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

   7333  Where in the World is Carmen San Diego fails to install
   8498  builtin msxml3 fails to validate MSN Messenger's xml
  10112  BitBlt between 8 bit color index DIBs wrong
  10249  ollydbg complains about unexpected debug events from child processes after attaching to the debuggee
  10423  Painkiller Single-Player Demo #3: change in shader_glsl_lit() caused white turrets
  10910  winealsa and PulseAudio
  11167  Wrong usage of GL_GENERATE_MIPMAP_HINT_SGIS
  12071  MSI SQL joins on tables with many rows are extremely slow ("Nero 7 essentials", "NI Multisim 11.x" installer)
  12894  kernel32: thread test fails in PC-BSD but not Linux
  16549  Chuzzle causes page fault
  16822  Mass Effect: Mouse input does not work (almost completely)
  17206  alt.binz 0.24.6: Minimize to systray, icon flickers, right click on systray icon, icon menu won't disappear
  18140  FastMail: vertical stripes in the fields
  19037  CTRL key automatically released?
  19370  Secret of Monkey Island audio functioning is dependent on Wine's sample rate
  19522  Team Fortress 2 (TF2) missing menu fonts
  19558  Many Faces of Go 12 - Stone backgrounds are not transparent
  19971  NFS: Undercover crashes upon launch
  20554  Populous 3 fails to start
  21889  F/A-18E Super Hornet fails to start
  22683  Jedi Knight: Dark Forces II weapon is missing
  23480  AD-muncher does not install
  23658  Acclaim Re-Volt: All transparent objects not displayed correctly (black/blinky)
  23911  Mathcad 14: unimplemented function msvcr80.dll._getptd, aborting
  24024  CandyWorldSetup.exe from Candy World III: Heart of Heaven Demo show incorrect font
  24504  Plants vs Zombies: Game loses sound when restarting game
  24957  32-bit Explorer++ shows garbage in the status bar while opening menu bar menus
  25163  HTML broken in OpenDiscDVD application
  25251  Multi-byte characters handled incorrectly by MSVCRT_isleadbyte()
  25291  Galcon Fusion: Music doesn't works with hardware accelerated sound
  25774  Crysis demo: water flickering
  25971  UPX packed 'Link 7000 Plus' exits silently
  25978  Secret of Monkey Island wants msvcp80.dll.?classic@locale@std@@SAABV12@XZ
  26074  shell32/brsfolder tests show some valgrind warnings
  26087  Notepad++ 5.x: window "Find in files" does not respond
  26091  Finale 2010 - lines that are supposed to be dashed are solid
  26140  comdlg32/finddlg shows an uninitialized value under valgrind
  26187  Need For Speed: Underground crashes with extra effects enabled (blur, people)
  26486  Cannot run ArcGIS
  26552  Wine sets the resolution incorrectly on widescreen monitors
  26572  The 4th Coming: Deadlocks or crashes with "out of GDI object handles" errors
  27094  Lord of the Rings Online can't make entry in taskbar
  27101  Assassin's Creed Brotherhood needs msvcp90.dll.?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ (purist)
  27230  Corel Ventura 10's Installer hangs during setup process. Unable to finish setup.
  27261  first build of wine fails with "/usr/bin/ld: cannot find -lwinecrt0"
  27331  kernel32.GetLocaleInfoA/W needs to be more strict about invalid LCTYPE values (Dirt3 installer shows language selection with empty strings)
  27332  richedit EM_STREAMIN handler needs to return the number of characters read (Dirt3 installer shows error instead of EULA text)
  27507  Mount&Blade: Warband: Mouse pointer not shown in menu after entering battle mode
  27534  Call of Duty 4 MW: Graphical glitches when shooting
  27635  FlyLinkDC: Incorrect display images
  27682  Avant Browser needs HTMLDocument_elementFromPoint
  27762  EVE Online Singularity build crashes on start due to changes in winsock
  27956  Dragon Naturally Speaking: Sound no longer works; sample rates and size is no longer supported
  28056  Problems with sound under FreeBSD
  28086  Army Builder v3.3b: buttons not clickable
  28261  Original War: the user interface appears incorrectly (ddr=opengl)
  28291  Heroes III: sound stops and program hangs at exit
  28346  Paraworld hangs after playing the intro videos with Opengl renderer
  28352  Nightly (x64) needs msvcp90.dll.?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z
  28356  Loki requires msvcp80.dll.??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z
  28395  MAKING HISTORY II: The War of the World Demo wants msvcp90.dll.??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z
  28397  gdi32/bitmap test broken on debian testing and ubuntu 11.04
  28399  Kindle for PC needs msvcp90.dll.?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z
  28452  warning: argument to 'sizeof' in 'memcpy' call is the same expression as the source; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
  28454  Audacity 1.3 crashes on startup - unimplemented function msvcp90.dll.?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z
  28485  Pegasus Mail version 4.62 crashes on startup (needs GetProcessDEPPolicy stub)
  28497  Dawn of War: Soulstorm no longer starts
  28500  Fails to parse DIM a statement that is on more than one line.
  28548  Messiah demo installer crashes (ddr=opengl)
  28551  Adobe Reader X fails to uninstall
  28560  Time is 1 hour behind in cmd.exe and notepad (F5)
  28569  From Dust installer wants url.dll.OpenURLA
  28574  Unimplemented function msvcp80.dll.?begin@?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV? $_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ
  28588  Diner Dash 5 clicking sound during gameplay
  28594  mshtml/style.ok crashes when run without DISPLAY
  28616  Plants vs Zombies: no music
  28617  FlatOut 2 v1.2 crashes on launch (audio related)
  28619  Armored Fist 3: distorted audio playback
  28624  Unimplemented function msvcp80.dll.?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z
  28625  Sanitarium: intermittent freezing while moving the mouse
  28642  Multiple apps crash on start (incl. Office 2007 & 2010)
  28644  Uru launcher using up CPU and RAM on startup
  28648  unable to run HelpNDoc - A program that helps you create chm files
  28662  kernel32/loader test crashes on FreeBSD7/9 (at least)
  28679  Corrupt sound in many apps
  28684  Incomplete check for Mesa's gl_vendor_string in wined3d_guess_card_vendor.
  28700  And Yet It Moves refuses to launch: 'err:seh:raise_exception Exception frame is not in stack limits'
  28707  Nightly (x64) needs msvcp90.dll.?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z
  28714  vbscript/run.ok: invalid write in DispatchEx_Release
  28720  Kindle for PC needs msvcp90.dll.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z
  28722  Assassins Creed installer fails with GameuxInstallHelper.AddToGameExplorerW error 0x80040707
  28731  Drakensang (The Dark Eye) crashes before reaching the main menu
  28732  use-after-free in MONTHCAL_UpdateSize
  28733  Rome: Total War segfaults on startup when multisampling enabled
  28737  shell32: invalid free in BrsFolderDlgProc in func_brsfolder in "make brsfolder.ok"?
  28740  Google Music Manager can't open music player
  28742  comctl32/tests/monthcal.ok: Invalid read in MONTHCAL_NotifyDayState() in test_daystate()
  28753  AniDB O'Matic shows exception dialog on startup (madcodehook, gcc 4.6.x frame pointer omission in Wine code)
  28773  Kindle for PC exposes some heap corruption in msvcp90
  28780  VBScript fails to parse hex literals
  28791  XSetDashes is being passed 0 as one of the dashes causing a BadValue Error
  28794  user32:edit crashes on Mac
  28796  ntdll: read buffer overrun in lookup_manifest_file
  28811  Invalid read in ScriptBreak()
  28812  Uninitialized memory read in ContextualShape_Oriya() in test_ScriptShapeOpenType
  28813  usp10/tests: uninitialized stack variable in test_ScriptXtoX

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

Changes since 1.3.30:

Alex Henrie (6):
      po: Update Catalan translation.
      po: Update Catalan translation.
      winecfg: Add Catalan translation.
      comctl32: Add Catalan translation.
      comdlg32: Update Catalan translation.
      shell32: Update Catalan translation.

Alexander Morozov (2):
      kernel32/tests: Shared lock can overlap exclusive if handles are equal.
      server: Fix overlapping shared and exclusive locks support.

Alexandre Julliard (41):
      winex11: Fall back to client-side blit for color -> monochrome conversions.
      winex11: Fall back to client-side blit when the source needs palette mapping.
      winex11: Require an A8R8G8B8 format for blending with a source alpha.
      gdi32/tests: Add tests for GdiAlphaBlend with source alpha.
      gdi32: Add an AlphaBlend entry point in the DIB driver.
      winex11: Get rid of the client-side DIB optimization in AlphaBlend.
      gdi32: Add an all-one alpha channel when converting a DIB for blending.
      gdi32: Move some common code out of the individual copy_rect functions.
      gdi32: Add a helper function to look up color table entries, and default to 0 for missing entries.
      gdi32: Add support for arbitrary DIB bitfields for 32-bpp conversions.
      gdi32: Add support for arbitrary DIB bitfields for 16-bpp conversions.
      gdi32: Get rid of the return value in DIB conversion functions, they never fail now.
      gdi32: Add a check for null bitfields in SetDIBits.
      gdi32: Add a helper for RGB to color index mapping to avoid redundant shifts.
      gdi32: Use a reduced precision for RGB to palette mapping in DIB conversions.
      gdi32/tests: Add tests for DIB conversions from various source formats.
      gdi32/tests: Add more tests for arbitrary 32-bpp bitfields as destination.
      gdi32/tests: Add more tests for various palette formats as destination.
      gdi32: Overlapping rectangles are not allowed in GdiAlphaBlend.
      gdi32: Implement a BlendImage entry point in the DIB driver.
      gdi32/tests: Add test cases for DIB blending.
      gdi32: Add a fall back implementation of BlendImage using client-side blending.
      wineps: Get rid of the StretchDIBits entry point.
      gdi32: Get rid of the DC_FUNCTIONS typedef.
      gdi32: Return the correct error code when selecting objects in a metafile.
      ntdll: Unwind the stack before calling exit/abort_thread on i386 the same way we do on x86_64.
      ntdll: Fix string comparison against non null-terminated string (Valgrind).
      gdi32: Add support for pushing a font driver on the DC driver stack.
      gdi32: Add an initial Freetype font driver.
      gdi32: Implement SelectFont as a standard driver entry point.
      gdi32/tests: Add intermediate pointers to color tables to simplify the code and avoid array bounds warnings.
      gdi32: Add an intermediate variable to avoid array bounds warnings.
      gdiplus/tests: Add an intermediate variable to avoid array bounds warnings.
      ntdll/tests: Clear the full atom structure before every test.
      winex11: Chain to the next driver when not using a device font.
      wineps: Chain to the next driver when not using a device font.
      gdi32: Implement GetTextExtentExPointW as a standard driver entry point.
      gdi32: Implement GetCharWidthW as a standard driver entry point.
      xcopy: Fix varargs handling for 64-bit.
      winex11: Filter out zero-size dashes for PS_USERSTYLE pens.
      wineps: Add support for PS_USERSTYLE pens.

Alistair Leslie-Hughes (6):
      mshtml: Implement IHTMLDOMNode replaceChild.
      mscoree: Add WARN when ICorDebugManagedCallback2 cannot be found.
      url: Remove DllCanUnloadNow and DllGetClassObject.
      mscoree: Register interfaces.
      mmcndmgr: Add MMC interfaces.
      mmcndmgr: Add mmcndmgr dll.

Andrew Eikum (13):
      winealsa.drv: Don't try to control ALSA's behavior.
      wineoss.drv: Trim the sub-device part of the device path.
      wineoss.drv: Only write as much data as will fit into the OSS buffer.
      winmm: Also track input device position.
      winmm: Use buffer offset when recording.
      dsound: Request a more exact buffer size from MMDevAPI.
      winecoreaudio.drv: Don't fail if setting volume fails.
      winealsa.drv: Fix invalid pointer dereference on error path.
      dsound: Fix type conversion problems.
      dsound: Don't make the capture buffer object address public until it is prepared.
      shell32: ShellExec with empty operation should behave same as with NULL operation.
      dsound: Don't claim to support hardware buffers.
      dsound: Always enumerate the default device first.

Andrew Talbot (7):
      windowscodecs: Mark some fall-throughs in switch statements.
      winealsa.drv: Add some return statements to mark semantic separations.
      wined3d: Mark some fall-throughs in switch statements.
      winex11.drv: Mark some fall-throughs in switch statements.
      wininet: Add a break to a switch statement.
      ws2_32: Mark a fall-through in a switch statement.
      ws2_32: Replace switch statement with more suitable if statement.

André Hentschel (6):
      include: Add more postscript commands.
      wineps.drv: Print the commands in decimal.
      dbghelp: Remove superfluous PATH_MAX defines.
      mshtml: Add stub for QUERY_IS_CACHED_AND_USABLE_OFFLINE.
      dbghelp: Rewrite stabs parsing to not need PATH_MAX.
      msvcr90: Add x86_64 stubs and forwards.

Aric Stewart (17):
      user32: Use uniscribe ScriptBreak to handle edit control linebreaking.
      usp10: Improve handling of tabs and SSA_TAB.
      usp10: Implement SSA_FALLBACK.
      usp10: Correct where the trailing flag transitions in the middle of a glyph.
      usp10: Correct buffer reading overrun.
      usp10: Add fallback font for Armenian and Georgian.
      usp10: Handle the fNeedsCaretInfo flag in XtoCP and CPtoX.
      usp10: Break out get_cluster_size and use it to correct ScriptStringGetLogicalWidths for clusters.
      usp10: Handle advance for multi-glyph clusters correctly.
      usp10: Properly adjust LogClust when composing indic consonants.
      usp10: Properly adjust LogClust when decomposing indic vowels.
      user32: Use Uniscribe in the single line edit control.
      usp10: Handle multi-glyph clusters in ScriptStringOut.
      user32: Recalculate string length when cropping string to fit.
      usp10: Correct read overflow in ScriptBreak found by Valgrind.
      usp10/tests: Initialize our SCRIPT_VISATTR array.
      usp10: Correct some reading buffer overruns when parsing indic syllables.

Aurimas Fišeras (3):
      po: Update Lithuanian translation.
      comdlg32: Update Lithuanian translation.
      po: Update Lithuanian translation.

Austin English (4):
      wined3d: Recognize "Brian Paul" as a mesa card vendor.
      d3d9/tests: Only skip the visual tests if d3d cannot be initialized on Windows.
      configure: Use -fno-omit-frame-pointer when available.
      kernel32: Add a stub for GetProcessDEPPolicy.

Bernhard Loos (5):
      server: PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE is invalid for named pipes.
      ntdll/tests: FILE_OVERWRITE and FILE_OVERWRITE_IF aren't legal for NtCreateNamedPipeFile.
      msi: Reorder tables to optimize condition evaluation.
      msi: Get rid of JOINVIEW.
      msi: Always use WHEREVIEW for sorting.

Charles Davis (2):
      ntdll: Also set CPU_FEATURE_HTT on Mac OS.
      libwine: Fix linking with non-Apple GCC.

Dan Kegel (6):
      msi: Initialize variable to placate static analyzers.
      winealsa.drv: When allocating opaque blobs for alsa, initialize them to zero.
      gdiplus/tests: Must define biClrUsed when calling CreateDIBSection.
      shlwapi/tests: Initialize size parameter in test_SHGetShellKey.
      comdlg32/tests: Initialize find & replace strings before testing FindTextA, etc.
      mlang/tests: Don't call lstrcpyW on a null string.

Daniel Santos (2):
      winex11.drv: Add on-screen PS_USERSTYLE support to pens.
      gdi32: Remove PS_USERSTYLE FIXME and workarounds.

Dmitry Timoshkov (4):
      user32: Respect the requested size of NONCLIENTMETRICSW structure.
      ntdll: FreeBSD needs page read access when execute access is requested.
      ntdll: Move adding VPROT_READ for Solaris to the same place where it's done for FreeBSD.
      ntdll: Take into account timezone bias changes when detecting daylight saving rules.

Dylan Smith (1):
      d3dx9: Removed a duplicate NULL check.

Francois Gouget (10):
      comctl32/tests: Make impl_from_IStream() static.
      po: Fix translations with a mismatched '\n' ending or mark them as fuzzy.
      po: Fix Catalan translations with a mismatched '\n' ending.
      xcopy: Reorder the functions to avoid forward declarations.
      xcopy: Use FormatMessage() for better internationalization support.
      shlwapi: Don't use a long where an int is more than big enough.
      winefile: Fix a string resource so its format placeholders can be reordered.
      wineconsole: Fix a string resource so its format placeholders can be reordered.
      attrib: Use FormatMessageW() for better internationalization support.
      net: Use FormatMessageW() for better internationalization support.

Frédéric Delanoy (17):
      po: Update French translation.
      cmd/tests: Add MOVE tests.
      cmd/tests: Show that read-only files are MOVEable.
      cmd: Make MOVE work for read-only files.
      inetmib1: Avoid idempotent operation in findSupportedQuery function (Clang).
      cmd/tests: Add tests for directories RENAMEs.
      cmd/tests: Show that read-only files are RENAMEable.
      cmd: Make RENAME work for read-only files.
      cryptui: Avoid idempotent operation (Clang).
      po: Update French translation.
      cmd: Rename WCMD_opt_s_strip_quotes function.
      dmime: Avoid idempotent operation (Clang).
      mlang/tests: Fix a typo.
      dinput: Avoid casting return value of HeapAlloc calls.
      dpnet/tests: Avoid casting return value of HeapAlloc calls.
      msvcrt: Avoid superfluous cast of MSVCRT_malloc return value.
      cmd: Constify WCMD_pushd parameter.

Hans Leidekker (3):
      msi: Don't attempt to patch files if the component action resolves to anything other than INSTALLSTATE_LOCAL.
      msi: Properly build the shortcut target path.
      cryptnet: Respect proxy settings.

Henri Verbeet (35):
      gameux: Parse GDFs in a separate thread.
      gameux/tests: Run the game explorer tests in a multithreaded apartment as well.
      wined3d: Make the device parameter to wined3d_device_get_front_buffer_data() const.
      wined3d: Make the device parameter to wined3d_device_validate_device() const.
      wined3d: Make the device parameter to wined3d_device_get_software_vertex_processing() const.
      gameux: Don't shadow hr in GAMEUX_RegisterGame().
      wined3d: Get rid of the mostly unused "pfd" variable in context_create().
      wined3d: Cleanup context_create() error handling a bit.
      wined3d: Make the device parameter to wined3d_device_get_raster_status() const.
      wined3d: Make the device parameter to wined3d_device_get_npatch_mode() const.
      wined3d: Don't bother updating the context's window in context_destroy_gl_resources().
      wined3d: Don't try to access the swapchain of a destroyed context in context_set_gl_context().
      wined3d: Also restore the pixel format in context_restore_gl_context().
      wined3d: Make the device parameter to wined3d_device_get_render_target() const.
      wined3d: Make the device parameter to wined3d_device_get_depth_stencil() const.
      wined3d: Keep surfaces in sysmem if they're both already there in wined3d_surface_blt().
      wined3d: Mark default pool surfaces lost when they're unloaded.
      ddraw: Destroy the swapchain in ddraw_destroy() if it still exists.
      wined3d: Make the device parameter to invalidate_active_texture() const.
      wined3d: Make the device parameter to is_display_mode_supported() const.
      ddraw: Initialize the surface desc's dwFlags field to 0 before surface locks.
      ddraw: Clear attached_iface before releasing it in ddraw_surface_delete_attached_surface().
      wined3d: Detach any attached overlays on surface cleanup.
      wined3d: Make the present_parameters parameter to wined3d_device_reset() const.
      wined3d: Make the device parameter to wined3d_device_get_creation_parameters() const.
      wined3d: Allow loading multisampled surfaces into sysmem.
      d3d8/tests: Add a small test for multisampled CopyRects().
      d3d9/tests: Add a small test for multisampled GetRenderTargetData().
      wined3d: Make the device parameter to wined3d_device_set_gamma_ramp() const.
      wined3d: Make the device parameter to wined3d_device_get_gamma_ramp() const.
      wined3d: Move the cursor in wined3d_device_set_cursor_position().
      d3d8/tests: Add a small test for IDirect3DDevice8::SetCursorPosition().
      d3d9/tests: Add a small test for IDirect3DDevice9::SetCursorPosition().
      wined3d: Make the device parameter to wined3d_device_get_surface_from_dc() const.
      wined3d: Make the device parameter to context_choose_pixel_format() const.

Huw Davies (25):
      gdi32: Remove no longer needed include file.
      gdi32: Now that we require a less ancient freetype, we can assume several other functions are also present.
      gdi32: Add a helper to retrieve the bounding rectangle.
      gdi32: The text extents functions fail if passed a negative count.
      gdi32: Move to a more scalable mechanism for picking the default fonts.
      gdi32: Add the liberation fonts to the default fallback lists.
      gdi32: Use the helper to get the bounding rectangle.
      gdi32: Allow a caller to build_rle_bitmap to not request the clip region.
      gdi32: Move the intersection of vis rects into a separate function.
      gdi32: Make the convert_bits and stretch_bits helpers external.
      gdi32: Implement nulldrv_StretchDIBits using the PutImage gdi driver function.
      gdi32/tests: Add some StretchDIBits tests.
      gdi32/tests: Remove unused legacy values.
      gdi32: Introduce a unified function to perform COLORREF to pixel color mapping.
      gdi32: Add support for non-rgb colorrefs.
      gdi32/tests: Add tests for non-rgb colorrefs.
      gdi32: Add pixel_to_colorref primitives.
      gdi32: Implement SetPixel.
      gdi32/tests: Add tests for SetPixel.
      gdi32: Add get_pixel primitives.
      gdi32: Implement GetPixel.
      gdi32/tests: Add tests for GetPixel.
      gdi32/tests: Remove the no longer used todo functionality of the test_color macro.
      gdi32: Fix character code metrics for bitmap fonts.
      gdi32: Add a fake 1-entry color table for 1-bpp ddbs.

Hwang YunSong (2):
      po: Updated Korean translation.
      po: Updated Korean translation.

Jacek Caban (28):
      vbscript: Pass arguments to 1-arg functions directly if they are VT_VARIANT|VT_BYREF.
      vbscript: Added Hex function implementation.
      vbscript: Added Hex function tests.
      vbscript: Make sure to remove an object from object list in collect_objects.
      vbscript: Keep script context alive after Close call, but make it reusable.
      vbscript: Added more script state tests.
      vbscript: Properly release global variables.
      vbscript: Added more releasing tests.
      shlwapi: Make sure we don't write anything to output buffer if its size is too small to store the whole result.
      vbscript: Added lexer support for '_'.
      mshtml: Better error handling in NSContainer initialization.
      vbscript: Added support for hex literals not ending with '&'.
      mshtml: Added IHTMLDocument2::elementFromPoint implementation.
      urlmon: Skip tests that fail on too old IEs.
      wscript: Added tests using vbscript.
      mshtml.idl: Added IHTMLWindow5 and IHTMLStorage declarations.
      mshtml: Added IHTMLWindow6 stub implementation.
      vbscript: Get rid of no longer needed VB_VARIANT|VT_BYREF in Global_IsObject.
      vbscript: Added Global_IsEmpty implementation.
      vbscript: Added Global_isNull implementation.
      ieframe: ieframe variant of IEWinMain is Unicode.
      vbscript: Added vbSunday constant implementation.
      vbscript: Added remaining week day constants implementations.
      hlink: Reorder functions to avoid vtbl forward declaration.
      hlink: Don't use WINAPI for internal functions.
      hlink: Moved HLinkBrowseContext_Constructor to avoid vtbl forward declaration.
      hlink: Return S_FALSE in GetTargetFrameName when returning NULL.
      hlink: Added TargetFrameName tests.

Juan Lang (2):
      shell32: Check size of input parameters before copying to fixed length buffers.
      shell32: Use existing buffer rather than copying, and potentially truncating, a filename prior to executing it.

Ken Sharp (3):
      ntdll: Update Win2k8 to SP2.
      winecfg: Update English resource.
      browseui: Update English resources.

Ken Thomases (4):
      winecoreaudio: Fix a leak.
      winecoreaudio: Fix a test for allocation failure (copy/paste error).
      winecoreaudio: Avoid an extra copy/conversion of a string.
      winecoreaudio: Improved tracing.

Louis Lenders (2):
      kernel32: Add stub for GetThreadPreferredUILanguages.
      kernel32: Add stubs for several SRW lock functions.

Luca Bennati (7):
      po: Update Italian translation.
      dinput: Add Italian translation.
      inetcpl: Update Italian translation.
      comdlg32: Update Italian translation.
      winecfg: Update Italian translation.
      po: Update Italian translation.
      po: Update Italian translation.

Marcus Meissner (20):
      winhttp: Fixed sizeof calls (Coverity).
      wined3d: Fixed sizeof (Coverity).
      dsound: Added missing LeaveCriticalSection (Coverity).
      winecfg: Added missing break (Coverity).
      user32: Load PaddedBorderWidth from registry too (Coverity).
      usp10: Fixed some oom handling (Coverity).
      dsound: Remove dead code from mixer (Coverity).
      setupx.dll16: Fixed bad sizeof() (Coverity).
      msvcrt: Replaced bad memcpy by strcpy (Coverity).
      msvcrt: Use correct sizeof to realloc (Coverity).
      mshtml: Adjusted some incorrect sizeofs (Coverity).
      gdi32: Remove a incorrect sizeof from pointer arithmetic (Coverity).
      explorerframe: Fixed incorrect sizeof (Coverity).
      directshow: Removed bad sizeof in copy/pasted code (Coverity).
      ddraw: Lowercase variable names to fix a incorrect sizeof() (Coverity).
      shlwapi: Fixed bad pointer arithmentic by removing sizeof() (Coverity).
      user.exe16: Fixed incorrect sizeof() (Coverity).
      ntdll: Avoid shadowing "de" variable.
      ntdll: Avoid shadowing size variable.
      ntdll: Avoid shadowing "p" variable.

Matteo Bruni (1):
      wined3d: Remove an obsolete comment.

Michael Mc Donnell (1):
      shell32: Set pointer to NULL after free to avoid double free.

Michael Stefaniuc (5):
      msi: Move a TRACE before the continue (Smatch).
      msi: Remove a break after return (Smatch).
      msi: Remove a redundant NULL check before free (Smatch).
      urlmon: Remove a redundant NULL check before free (Smatch).
      winealsa.drv: Remove redundant NULL checks before free (Smatch).

Nikolay Sivov (3):
      ntdll: Fix SID data copy length.
      comctl32/monthcal: Update pointer after reallocation (Valgrind).
      comctl32/tests: Make state data accessible to caller (Valgrind).

Octavian Voicu (3):
      ddraw/tests: Test detachment of attached surfaces on Release.
      ddraw: Be consistent about param and local var naming across AddAttachedSurface implementations.
      ddraw: Keep track of interface attached by AddAttachedSurface and detach correct interface when parent is released.

Piotr Caban (36):
      msvcrt: Don't overwrite mbcinfo inside setlocale.
      msvcrt: Handle C locale in _setmbcp.
      msvcrt: Use ismbcodepage instead of mb_cur_max in mbcodepage dependent functions.
      msvcrt: Use _ismbblead instead of _isleadbyte in mbcodepage dependent functions.
      msvcrt: Move _pctype definition to locale.c.
      msvcrt: Added _mbtowc_l implementation.
      msvcrt: Don't duplicate _setmbcp functionality inside _create_locale function.
      msvcp90: Added basic_string::find_first_not_of implementation.
      msvcp90: Added operator+(basic_string, char) implementation.
      msvcp90: Added basic_string::reserve implementation.
      msvcp90: Added basic_string<char>::replace implementation.
      msvcp90: Added basic_string<wchar>::replace implementation.
      msvcp90: Added basic_string::operator[] implementation.
      msvcp: Sync spec files.
      msvcrt: Added missing calling convention specification.
      msvcrt: Fix handling of locales without region in MSVCRT_locale_to_LCID.
      msvcp90: Added basic_string::operator<= implementation.
      msvcp90: Added basic_string::operator> implementation.
      msvcp90: Added basic_string::operator>= implementation.
      msvcp90: Added more basic_string::assing functions.
      msvcp90: Added more basic_string constructor implementations.
      msvcp90: Added basic_string::max_size implementation.
      msvcp90: Remove code that is never executed.
      msvcp90: Added _String_val class implementation.
      msvcp: Sync spec files.
      msvcp90: Added basic_string::rfind implementation.
      msvcp90: Added basic_string::find_last_not_of implementation.
      msvcp90: Added basic_string::replace iterator based functions.
      msvcp90: Added basic_string::erase iterator based functions.
      msvcp90: Added basic_string::get_allocator implementation.
      msvcp90: Fix buffer size in basic_string_char_grow.
      msvcp90: Use debugstr_a to avoid overflow in traces.
      msvcp: Sync spec files.
      msvcrt: Initialize all ctype fields.
      shell32: Don't convert output parameter in SHBrowseForFolderA (Valgrind).
      shell32/tests: Fix uninitialized memory access (Valgrind).

Ričardas Barkauskas (12):
      ddraw: Use unsafe_impl_from_IDirect3DDevice for application provided interfaces.
      ddraw: Rename device_from_device1 to impl_from_IDirect3DDevice.
      ddraw: COM cleanup for IDirect3DDevice interface.
      ddraw: Use unsafe_impl_from_IDirect3DDevice2 for application provided interfaces.
      ddraw: Rename device_from_device2 to impl_from_IDirect3DDevice2.
      ddraw: COM cleanup for IDirect3DDevice2 interface.
      ddraw: Use unsafe_impl_from_IDirect3DDevice3 for application provided interfaces.
      ddraw: Rename device_from_device3 to impl_from_IDirect3DDevice3.
      ddraw: COM cleanup for IDirect3DDevice3 interface.
      ddraw: Use unsafe_impl_from_IDirect3DDevice7 for application provided interfaces.
      ddraw: Use impl_from_IDirect3DDevice7 for application provided interfaces.
      ddraw: COM cleanup for IDirect3DDevice7 interface.

Stefan Dösinger (3):
      d3d8: Remove the palette implementation methods.
      d3d9: Remove the palette implementation methods.
      wined3d: Remove d3d8/9 palette support.

Stefan Leichter (1):
      url: Add stub for OpenURLA.

Thomas Faber (1):
      ntdll/tests: Fix build with MSVC.

Uwe Bonnes (1):
      ntdll: Generate a single EV_TXEMPTY when the TX buffer turns empty.

Vincent Povirk (2):
      windowscodecs: Use a smaller magic number to detect JPEG files.
      msi: Use MsgWaitForMultipleObjectsEx to do waits.

Vitaliy Margolen (7):
      dinput: GetDeviceData always succeeds regardless if buffering is enabled or device is acquired.
      dinput: Acquire should not reset buffer position.
      dinput: Fix buffer size in test.
      dinput: Add buffer overflow check.
      dinput: Don't mask buffer overflow error.
      dinput: Put some checks back into GetDeviceData for DirectInput 8.
      dinput: Add some logging to base class.

Łukasz Wojniłowicz (2):
      po: Update Polish translation.
      winecfg: Update Polish translation.

--
Alexandre Julliard
julliard@winehq.org
