The Wine development release 1.7.48 is now available.

What's new in this release (see below for details):
  - Fleshed out OpenMP implementation.
  - I/O stream support in the MSVCIRT C++ runtime.
  - Support for pixel snapping in DirectWrite.
  - More support for OpenGL core contexts.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.48.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.48.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.7.48 (total 39):

  11059  Sid Meier's Railroads Demo crashes on startup
  16519  EssentialPIM: Bold text not rendering correctly
  17506  Achtung die Kurve: Game doesn't start
  18191  Notepad corrupts files saved as utf-8 without a byte order mark (BOM)
  19289  Gtk+/Pango based applications have ugly font rendering or crash on startup
  19666  Multiple applications start wrong executable if whitespace present in name ('ShellExecute' doesn't quote executable name)(FoxitReader 3.0, GTA2 Manager)
  22399  Quake III Arena installer: Text area is scrolled at the bottom, and all text is selected
  26439  Chernobyl terrorist attack demo crashes on start
  27238  Tesla: The Weather Man demo: movement keys not working (GetKeyState should fallback to GetAsyncKeyState for threads without message queue)
  31063  Crash bug after finishing conversion in FormatFactory
  31643  Multiple games and applications crash on unimplemented function vcomp.dll._vcomp_fork (Gothic 3 demo, NeXTA)
  31984  Multiple games need d3dx9_36.dll.D3DXComputeTangentFrameEx (Starlaxis, Chernobyl Terrorist Attack Demo, The Endless Forest 3)
  32227  P2kCommander v6.0.0 crashes on startup (Wine's ungif reports app .gif image as broken)
  33153  DirectX11 games need d3d11.dll.D3D11CreateDeviceAndSwapChain (ARMA III Alpha, Strike Suit Zero, Stalker CoP, Perspective)
  33989  iexplore.exe crash when logging in to www.roblox.com
  34356  Multiple applications fail to install or crash on startup due gdiplus enumeration/query failure for GIF encoder support (Magnus 2011 translation dictionaries, Collectorz.com Movie Collector v9.x)
  34939  Dragon NaturallySpeaking does not run in 64-bit version
  34947  Creo Elements/Direct Modeling Express 4.0 InstallShield based installer shows oversized "installation completed" setup wizard window
  35493  IMVU shows loading bar, but will not start.
  35534  Oblivion: very loud/distorted/horrible collision sounds
  36336  NaturallySpeaking doesn't work with alsa or pasuspender
  36966  Turkey - Europe/Istanbul timezone is not detected
  37129  Clang Static Analyzer: Buffer overflow
  37281  Lord of The Rings Online: Crashes
  37449  Lexware Quicken 2014 Deluxe reports error 0x0000054f on startup (Promon Shield DRM needs RtlDecompressBuffer with COMPRESSION_FORMAT_LZNT1 support)
  38027  HyperStudio 5 (.NET 4.0 app) fails to start, reports 'tiff_get_decode_info unhandled grayscale sample count 2'
  38697  wineconsole: Cannot enable or disable Insert Mode through user dialog
  38712  win-key press incorrectly recognized
  38735  Windows Performance Analyzer from Windows SDK 8.1 Windows Performance Toolkit crashes due to 'IDWriteFontFace::GetGdiCompatibleGlyphMetrics' stub
  38806  Starcraft Campaign Editor does not scroll to bottom after copying a trigger
  38848  valgrind shows several uninitialized values in dmime/tests/dmime.c:test_track()
  38895  Multiple applications fail to load or crash due to incorrect security cookie randomization by loader (IrfanView WebP plugin, Word Viewer 2007)
  38904  Ufo Aftermath launcher hangs on start (missing "HKLM\Software\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers" registry key)
  38908  PlanetSide 2 v5.2.4.x launcher process exit causes wineserver crash
  38913  valgrind shows some definite leaks in d3drm/tests/d3drm.c:
  38914  valgrind shows uninitialized memory in dlls/dwrite/tests/layout.c
  38925  ipstats.c:1992 runtime error: index 32 out of bounds for type 'char [32]'
  38937  Bully: Scholarship Edition crashes on starting a new game (needs vcomp.dll._vcomp_for_static_simple_init implementation)
  38952  PDF-Xchange Viewer crashes when we launch OCR

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

Changes since 1.7.47:

Aaryaman Vasishta (6):
      d3drm: Move AddRef from device2->device3.
      d3drm: Move Release from device2->device3.
      d3drm: Move QueryInterface from device2->device3.
      d3drm/tests: Fix leaks while creating device in tests (Valgrind).
      d3drm: Thunk relevant IDirect3DRMDevice2 stubs to version 3.
      d3drm: Add stubs for IDirect3DRMDevice methods.

Akihiro Sagawa (3):
      po: Update Japanese translation.
      po: Fix a mistake in Japanese translation.
      mciseq: Ensure the player thread termination when stopping.

Alasdair Sinclair (1):
      ntdll: Add missing WINAPI to RtlDecompressFragment.

Alex Henrie (3):
      user32: Simplify if-else statement.
      user32: Scroll listbox item completely into view on LB_SETCURSEL.
      user32/tests: Correct spelling of "Invisible".

Alexandre Julliard (2):
      server: Don't associate a thread to the MJ_CREATE and MJ_CLOSE requests.
      winebuild: Add DllMain to the list of functions that should be private.

Alistair Leslie-Hughes (1):
      include: Correct spelling of Tessellate.

Andrew Cook (1):
      server: Implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.

André Hentschel (10):
      iphlpapi: Fix possible Out-of-bounds write (Coverity).
      ws2_32: Pass correct buffer length to WS_inet_ntop (Coverity).
      mcicda: Remove dead code (Coverity).
      wordpad: Copy the correct amount of data with lstrcpynW (Coverity).
      notepad: Use character count for GetFileTitleW (Coverity).
      widl: Remove unused initializer (Clang).
      krnl386.exe16: Remove unused initializers (Clang).
      winedbg: Remove dead variable (Clang).
      dwrite: Remove unused initializer (Clang).
      winedump: Dump load config when available.

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

Austin English (2):
      loader: Add HKLM\Software\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers registry key.
      winsta: Add initial winsta.h.

Christian Costa (2):
      d3dx9_36: Add stub for D3DXComputeTangentFrameEx.
      d3dx9_36: Add stub for D3DXIntersect.

Dan Kegel (2):
      vcomp: Implement stub for _vcomp_fork.
      vcomp/tests: Add additional tests for _vcomp_fork.

Daniel Lehman (2):
      msvcp90: Implement time_get<char> ctors and dtors (Valgrind).
      gdi32: Check for NULL pointer in GetOutlineTextMetrics.

Dmitry Timoshkov (15):
      kernel32: Fix compilation of loader tests with PSDK.
      kernel32/tests: Add a loader test using minimal PE image that Windows7 is able to load.
      ole32: Fix a memory leak.
      include: Add support for NtCurrentTeb and PSDK compiler in 64-bit mode.
      winex11.drv: On KeymapNotify event also sychronize WinKey state.
      windowscodecs: Add support for 8bpp grayscale TIFF with 8bpp alpha.
      gdiplus: Move the burden of supporting GIF encoding to the WIC backend.
      windowscodecs/tests: Add some tests for loading truncated GIF images.
      windowscodecs: Don't fail to decode GIF if an image has been already loaded.
      ntdll: Cache contents of IMAGE_TLS_DIRECTORY instead of saving a directory pointer.
      windowscodecs: Properly handle empty GIF extension blocks.
      user32: Add a test to show that fonts returned by SystemParametersInfo(SPI_GETNONCLIENTMETRICS) should be listed by EnumFontFamilies(hdc, NULL).
      gdi32: Add a test for enumerating substituted fonts.
      gdi32: EnumFontFamilies should enumerate substituted fonts only when directly asked for.
      user32: SystemParametersInfo(SPI_GETNONCLIENTMETRICS) should return real font names.

Erich Hoover (2):
      ntoskrnl.exe: Improve IoGetDeviceObjectPointer stub to appease SecuROM 5.x.
      ntdll: Only set the security cookie if it has not already been set.

Frédéric Delanoy (2):
      wineconsole: Leave more room for translations in resource file.
      po: Update French translation.

Hans Leidekker (19):
      msi: Check the return value of MSI_QueryGetRecord (Coverity).
      msi: Fix a couple of memory leaks (Coverity).
      msi: Add a stub implementation of MsiJoinTransaction.
      msi/tests: Avoid another test failure on win2k3.
      ieframe: Implement IViewObject::GetAdvise and IViewObject::SetAdvise.
      ieframe: Never pass a NULL string pointer with DISPID_STATUSTEXTCHANGE.
      user32: Add a stub implementation of UnregisterPowerSettingNotification.
      user32: Return a fake handle from RegisterPowerSettingNotification.
      server: Make returning used privileges optional in token_access_check.
      msi/tests: Mark a test result on win2k3 as broken.
      wininet/tests: Include the error code in a failure message.
      davclnt: Add stub implementations of DavRegisterAuthCallback and DavUnregisterAuthCallback.
      iphlpapi: Add a partial implementation of CreateSortedAddressPairs.
      iphlpapi: Implement a couple of interface identifier conversion functions.
      include: Add definition of MIB_IF_ROW2.
      iphlpapi: Implement GetIfEntry2.
      netprofm: Create a connection point object for INetworkCostManagerEvents.
      netprofm: Improve the stub for INetworkCostManager::GetDataPlanStatus.
      netapi32: Implement DavGetHTTPFromUNCPath.

Henri Verbeet (18):
      d2d1: Implement d2d_factory_CreateRectangleGeometry().
      d2d1: Also bind the pixel shader and blend state in d2d_brush_bind_resources().
      d2d1: Introduce a separate function to construct pixel shader constant buffers for brushes.
      d2d1: Implement d2d_d3d_render_target_FillGeometry().
      d2d1: Implement d2d_geometry_sink_AddLines().
      d2d1: Properly trace "vertex_count" in d2d_path_geometry_triangulate().
      d2d1/tests: Don't call compare_surface() inside ok().
      d2d1: Implement d2d_geometry_sink_SetFillMode().
      d2d1: Implement initial support for drawing bezier curves.
      d2d1: Add some FIXMEs for unimplemented functionality to d2d_d3d_render_target_DrawGlyphRun().
      d3d10core: Implement d3d10_device_CopySubresourceRegion().
      d2d1: Add a missing TRACE to d2d_d3d_render_target_FillRectangle().
      d2d1: Implement d2d_d3d_render_target_FillRoundedRectangle().
      d2d1: Implement d2d_d3d_render_target_FillEllipse().
      d2d1: Fix the bitmap DPI scale for bitmap brushes.
      d2d1: Implement d2d_d3d_render_target_GetPixelFormat().
      include: Add WIC error codes to winerror.h.
      d2d1: Also infer the alpha mode in d2d_d3d_render_target_CreateBitmapFromWicBitmap().

Hugh McMaster (3):
      wineconsole: Rearrange user dialog to make room for new controls and improve resource strings.
      wineconsole: Allow users to enable or disable Insert Mode via the user dialog.
      kernel32: Enabling/disabling Insert Mode via the user dialog should take effect immediately.

Huw D. M. Davies (15):
      rpcrt4: Initialize CorrDespIncrement to zero and mark the pre-Vista behaviour as broken.
      rpcrt4: Set CorrDespIncrement to the size of the (non-range) /robust payload.
      rpcrt4: Add missing calls to NdrCorrelationInitialize/Free.
      rpcrt4: Use CorrDespIncrement to skip over the correlation descriptor.
      rpcrt4: Procedures containing a range within a conformance have a larger correlation descriptor.
      msi: Fix a registry key leak.
      msi: Be more selective about which access modes are used to open or create keys.
      advapi32: Don't call CloseServiceHandle() with an invalid handle.
      msi: Don't call CloseServiceHandle() with an invalid handle.
      net: Don't call CloseServiceHandle() with an invalid handle.
      wbemprox: Don't call CloseServiceHandle() with an invalid handle.
      mshtml/tests: Fix a crash on Win 2008.
      winhttp: Fix a reference leak.
      winhttp: Don't wait for the task thread to exit.
      winhttp: Implement WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT.

Iván Matellanes (21):
      msvcirt: Implement ios locking control.
      msvcirt: Implement ios object locking.
      msvcirt: Implement ios stream locking.
      msvcirt: Implement ios static locking.
      msvcirt: Implement ios::flags.
      msvcirt: Implement ios::setf.
      msvcirt: Implement ios::unsetf.
      msvcirt: Implement ios::fill.
      msvcirt: Implement ios::precision.
      msvcirt: Implement ios::width.
      msvcirt: Implement ios::tie.
      msvcirt: Implement ios::rdbuf.
      msvcirt: Implement ios::delbuf.
      msvcirt: Implement ios status-testing functions.
      msvcirt: Implement ios operators.
      msvcirt: Add ios format flag masks.
      msvcirt: Implement ios manipulators.
      msvcirt: Implement ios::bitalloc.
      msvcirt: Add support for ios state variables.
      msvcirt: Add ios instance counter.
      msvcirt: Correct the statebuf array exports.

Jacek Caban (7):
      ieframe: Allow travellog buffer to grow even if we're loading from the history.
      ieframe: Fixed invalid COM object usage.
      widl: Don't output C++ default value if the argument is followed by another without default value.
      include: Added inspectable.idl file.
      ieframe: Release client site interface before destroying embedding window.
      ieframe: Added support for OnFocus notifications.
      ieframe: Improved debug traces.

Jactry Zeng (2):
      gdi32: Add a helper to map font replacement.
      gdi32: Add multiple font replacement support.

Jarkko Korpi (1):
      widl: Increase buffer size in typegen.c.

Julian Rüger (1):
      po: Update German translation.

Lauri Kenttä (1):
      po: Update Finnish translation.

Matteo Bruni (8):
      wined3d: Make the core extensions enabling table-based.
      wined3d: Add more entries to the core extensions table.
      wined3d: Bind a VAO when using core profile contexts.
      wined3d: Avoid glBegin() / glEnd() in check_fbo_compat() when possible.
      wined3d: Don't run check_filter() on core contexts.
      wined3d: Allow to apply extension emulation wrappers independently.
      wined3d: Don't crash when emulating GL_EXT_fogcoord.
      wined3d: Only install emulation wrappers when required.

Michael Müller (1):
      aclocal.m4: Search for otool using AC_CHECK_TOOL.

Michael Stefaniuc (6):
      include: Add IAMVfwCaptureDialogs declaration.
      qcap: Remove initialization code from QI of VfwCapture.
      qcap: There can be only ONE QueryInterface in VfwCapture!.
      qcap: Support COM aggregation in VfwCapture.
      qcap/tests: Add COM tests for VfwCapture.
      wined3d: Merge two adjacent ifs with identical condition (PVS-Studio).

Nikolay Sivov (30):
      dwrite: Implement pixel snapping in Draw().
      dwrite: Check GetGdiCompatibleMetrics() return value (Coverity).
      dwrite: Implement SetWordWrapping() for layout.
      dwrite: Handle negative emsize in GetGdiCompatibleMetrics().
      dwrite: Implement GetMetrics() for trimming sign.
      dwrite: Remove excessive tracing when forwarding to IDWriteTextFormat1.
      dwrite: Fix EndFigure notification in GetGlyphRunOutline().
      po: Update Russian translation.
      dwrite: Make sure explicit levels are always initialized (Valgrind).
      dwrite/tests: Fix trimming sign instance leak (Valgrind).
      dwrite: Fix transform matrix usage for pixel snapping.
      dwrite: Partially implement GetGdiCompatibleGlyphAdvances().
      dwrite: Partial implementation of GetGdiCompatibleGlyphMetrics().
      dwrite: Properly pass measuring mode to renderer.
      dwrite/tests: Some tests for CreateGdiCompatibleTextLayout().
      dwrite: Round advances returned from GetGdiCompatibleGlyphPlacements().
      dwrite: Fix vector transformation in GetGlyphOrientationTransform().
      dwrite: Aliased texture could only be requested for aliased rendering mode.
      dwrite: Improve parameter validation in GetGdiCompatibleGlyphAdvances(), add some tests.
      dwrite/tests: Some tests for bounds returned by GetAlphaTextureBounds().
      dwrite: Round centered alignment shift for compatible layouts.
      dwrite/tests: Some tests for isNewline clusters.
      dwrite: Bitmap render target uses top-down DIB.
      dwrite: Update cached bitmap size on Resize() as well.
      shell32: Added GetCurrentProcessExplicitAppUserModelID() stub.
      webservices: Added WsCreateError stub.
      user32: Initialize buffer before sending WM_GETTEXT.
      user32: Don't send WM_GETTEXT from GetWindowText() with invalid buffer length.
      dwrite/tests: Some tests for GetRecommendedRenderingMode().
      dwrite: Implement GetRecommendedRenderingMode().

Piotr Caban (6):
      shell32: Remove code for separating arguments from file path.
      shell32: Handle executable with space in path in SHELL_execute.
      shell32: Fix SHELL_execute code that removes quote arround file name.
      msvcrt: Don't call DeleteCriticalSection on static critical section.
      winemac.drv: Release mouse capture when destroying window specified in SetCapture call.
      mshtml: Test body.offsetHeight value in quirks mode.

Qian Hong (1):
      kernel32: Fix GetComputerName buffer overflow.

Sebastian Lackner (30):
      ntdll: Fix incorrect assignment in assert statement (Coverity).
      dwrite: Avoid dereferencing NULL pointer for fonts without VDMX.
      vcomp: Implement omp_get_max_threads and omp_set_num_threads.
      vcomp: Implement omp_{get,set}_nested.
      vcomp: Implement _vcomp_set_num_threads and omp_get_thread_num.
      server: Avoid sending unexpected wakeup with uninitialized cookie value.
      kernel32/tests: Repeat test for SignalObjectAndWait multiple times to test wineserver wakeup cookie management.
      configure: Do not assume gcc strength reduce bug when cross-compiling.
      shell32: Ensure that commandline is null-terminated when no parameters are given.
      ntdll: Avoid possible deadlock by using _exit() in NtTerminateProcess.
      vcomp: Add multithreaded implementation for _vcomp_fork.
      vcomp: Implement _vcomp_barrier.
      vcomp/tests: Add initial tests.
      vcomp: Implement _vcomp_sections_init and _vcomp_sections_next.
      vcomp/tests: Add tests for vcomp sections.
      vcomp: Allow calls to _vcomp_sections_init outside of parallel environment.
      vcomp: Fix handling of _vcomp_fork with ifval == FALSE.
      vcomp: Implement omp_in_parallel and add tests.
      vcomp: Implement _vcomp_for_static_simple_init and _vcomp_for_static_end.
      vcomp/tests: Add tests for _vcomp_for_static_simple_init.
      vcomp: Implement _vcomp_for_static_init.
      vcomp/tests: Add tests for _vcomp_for_static_init.
      ntdll/tests: Add basic tests for RtlQueueWorkItem.
      ntdll: Reimplement RtlQueueWorkItem on top of new threadpool API.
      vcomp: Implement 32-bit atomic integer functions.
      vcomp/tests: Add tests for 32-bit atomic integer functions.
      vcomp: Implement atomic float functions.
      vcomp/tests: Add tests for atomic float functions.
      vcomp: Implement atomic double functions.
      vcomp/tests: Add tests for atomic double functions.

Vincent Povirk (1):
      winex11.drv: Don't change net_wm maximized state for minimized windows.

YongHao Hu (1):
      msvcp110: Fix TRACE msg of tr2 functions.

Zhenbo Li (3):
      mshtml: Add IHTMLXMLHttpRequest::responseText() method implementation.
      mshtml: Add IHTMLXMLHttpRequest::status property implementation.
      mshtml: Add nsChannel_GetResponseStatusText implementation.

--
Alexandre Julliard
julliard@winehq.org
