Wine 1.5.20 released
Posted on: 12/22/2012 12:52 PM

The Wine development release 1.5.20 is now available

Wine 1.5.20 released

What's new in this release (see below for details):
- A bunch of dlls with ugly names for API sets support.
- More ATL functions implemented.
- Still more C++ runtime functions.
- Several text rendering fixes.
- PostScript driver improvements.
- Various bug fixes.

The source is available from the following locations:

Binary packages for various distributions will be available from:

You will find documentation on

You can also get the current source directly from the git
repository. Check 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.20 (total 73):

10138 exec* function family expands * and ?
13401 fr-057 demo scene application crashes at start up (custom imports resolver can't cope with some msvcrt functions being forwarded to ntdll)
14898 Delphi 6 Personal Edition will not install.
15817 King's Bounty : The Legend crashes/freezes when loading fight sequences
17006 setlocale to "en_us.UTF8" succeeds under wine, fails with native, causes knock-on failures
17031 popen not connecting to stdin / stdout correctly
19465 _mktime64 does not work with time/dates after 2038
19566 RPG Maker XP RTP/Player: Failed To Load Archive
19921 NetObjects Fusion, fatal error - needs msvcrt._mbsnbicoll
22489 Missing d3d11 prevents some games from running
22856 Several "web" installers have unreliable downloads/crashes in wininet (Runes of Magic 3.0.x: "ClientUpdater.exe", Microsoft PSDK, Visual Studio web installers)
24389 Winamp: crashes with Bento-Skin (needs msvcr90.dll._wtoi_l)
24413 Window/menu painting issues running Firefox 4.0 Windows 32-bit nightly
24621 Slow UI and toolbar redraw in SolidWorks
25470 msvcrt:cpp tests do not run on 64-bit
25717 Japanese fonts sometimes shifted to the left
25808 shdocvw:ie tests crash on clang
25828 oleaut32:tmarshal tests fail on clang
26729 Google Sketchup Layout crashes on main menu (GdipGetPathGradientSurroundColorCount and GdipSetPathGradientSurroundColorsWithCount stubs)
26754 Regedit crashes on start when compiled with clang from trunk
26755 wineboot crashes on start when cabinet.dll is compiled with clang
27386 Atari800Win PLus 4.0: crashes before window appears
27404 Zeq2Msvcrt and Mabinogi need msvcr90.dll._crt_debugger_hook
29426 UDF support: VOLUME_GetSuperblockSerial invalid for some volume types
29918 LibreOffice fonts antialiasing is wrong
29969 msvcr90/msvcr90 test sometimes hangs
30030 LuxMark 2.0 crashes on startup (msvcrt C++ exception handling)
30200 Writing 00x integers instead of 0x
30351 Firefox + Selenium hangs on startup
30444 Microsoft SQL Server Management Studio Express (SSMSE): opening new query window fails due to atl80 insufficiency
30512 Tencent Messenger 2008/2009 crashes with initialization failure due to atl80.dll AtlCreateRegistrar being a stub (registration of COM servers failed at install time)
30685 Billy can't open file: Error5 Function CheckFile
31246 QQMusic deadlock on exit with buitin msvcr80
31325 EA Origin wants msvcr100.dll._get_timezone (purist)
31542 msvcrt sprintf doesn't respect " " flag for E format.
31720 ScriptControl can't be used for jscript
31731 Toad: Installer infinite loop on destination folder dialog
31845 unimplemented function msvcr90.dll.fread_s
31947 NVIDIA GeForce GTX 660 Ti detected as GeForce 8300 GS
31986 calendar rendering bug in sporttracks 3
32043 Machines (demo) crashes while loading to the main menu
32107 Steam overlay corruption (+TF2?)
32160 PPTV: exits abnormally when begining the installation
32176 TTPlayer6: window can't get focus
32299 LMS Virtual Lab: Unimplemented function atl100.dll.AtlUpdateRegistryFromResourceD
32350 Heroes of Might and Magic V crashes when loading a saved game (without native msvcr71)
32369 dlls/ntdll/file.c fails to link with older glibc due to missing fallocate64()
32376 World of Dragons wants msvcr90.dll._sprintf_p
32387 Repair/Remove no longer available.
32394 WinUAE GUI does not resize when its window size increases
32399 installer of PPTV needs unimplemented atl100.dll.AtlModuleAddTermFunc
32405 Children of the Nile (& Demo): mouse buggy
32406 dsound randomly crashes when SetCooperativeLevel fails
32408 Evolve client (.NET 4.0 app) fails on startup due to WindowsCodecs PngDecoder_Frame_GetThumbnail() stub returning E_NOTIMPL instead of WINCODEC_ERR_CODECNOTHUMBNAIL
32410 Circuitmaker 2000 schematic hangs when editing text strings
32420 KZ ComputerZal needs IPHLPAPI.DLL.GetExtendedUdpTable
32422 comctl32: Bold text in treeview redrawn as plain underlined when mouse hovers over
32423 Installer of Qvod 5.5 crashes at start
32425 installer of PPTV needs unimplemented atl100.dll.AtlWinModuleAddCreateWndData
32432 .NET 2.0 Framework SDK installer fails on builtin atl80.dll (.spec file contains entries with spelling errors)
32433 installer of PPTV needs Unimplemented atl100.dll.AtlWinModuleExtractCreateWndData
32435 QQ2011 needs unimplemented atl80.dll.AtlComModuleGetClassObject
32440 The Secret of Monkey Island Special Edition crashes on start (GCC 4.7.x breaks certain Securom versions)
32442 Wallace & Gromit launcher missing buttons
32444 Incorrect graphic rendering when using Circuit Wizard
32453 Incorrect Common Control Font Size
32466 KwMusic's config program needs unimplemented function msvcrt.dll._atodbl
32467 Windows Sysinternals "bginfo" tool crashes due to incorrect sysparams PATH_ENTRY macro definition
32468 Windows Sysinternals "PsInfo" tool crashes while trying to retrieve WMI class Win32_WindowsProductActivation data
32469 Conflict: Denied Ops crashes while loading a mission (without native msvcr80)
32486 The Settlers 7 needs msvcr90.dll._aligned_msize
32487 unimplemented function msvcr90.dll._set_fmode
32494 theme hospital GOG installed gdiplus runtime error


Changes since 1.5.19:

Alexandre Goujon (1):
kernel32: Use the FSD sector location to compute the serial of a UDF volume.

Alexandre Julliard (25):
widl: Fix a typo in the man page.
gdiplus/tests: Tweak some metrics to make the tests pass on Wine.
gdi32: Add ref counting to the font objects and simplify the cache management.
gdi32: Fix handling of font orientation in advanced graphics mode.
winex11: Send WM_EXITSIZEMOVE when the mouse has been released.
gdi32: Add a level of pointers to the glyph cache to avoid the need for locking individual glyphs.
winex11: Send WM_ENTERSIZEMOVE when starting to poll for a window move/resize.
gdi32: Fix text justification to properly handle logical coordinates.
ole32: Limit the number of messages processed at once in CoWaitForMultipleObjects.
user32: Start checking for driver events more often when the app doesn't consume messages properly.
gdi32: Fix handling of rotation matrices in GetGlyphOutline.
gdi32: Add a helper function to order the points of a rectangle.
gdi32: Support wrongly ordered rectangles in RectVisible.
include: Force stack alignment also on Linux to work around the ABI breakage.
user32: Properly fixup font system parameters with positive height.
user32: Fix copy/paste typo.
fonts: Make Tahoma start at character 32.
gdi32: Add helper functions for GetTextExtentExPoint and fix handling of text justification.
gdi32: Remove from the GetTextExtentExPoint entry points parameters that can't be handled by the driver.
make_specfiles: Don't copy the ordinal flag if not appropriate.
oleaut32: Use a saner calling convention for the marshaller asm thunks.
oleaut32: Cleanup some relay traces.
gdi32: Compute the extents of the whole string at once in ExtTextOut.
gdi32: Avoid duplicate computation of text extents in ExtTextOut.
winspool.drv: Remove a todo that succeeds now.

Alistair Leslie-Hughes (1):
oleaut32: Don't output an error when the typelib cannot be found.

Amine Khaldi (4):
include: Define FIELD_OFFSET to the standard offsetof.
include: Define CONTAINING_RECORD using the standard offsetof.
include: Define WINE_RB_ENTRY_VALUE using the standard offsetof.
include: Define LIST_ENTRY using the standard offsetof.

Andrew Eikum (4):
winealsa.drv: Be less strict about wValidBitsPerSample.
dsound: Always fill wValidBitsPerSample.
mmdevapi: Implement (Un)RegisterEndpointNotificationCallback.
mmdevapi: Send notifications to clients when the user-selected default device changes.

Andrew Talbot (20):
windowscodecs: Remove unneeded address-of operator from array name.
mountmgr.sys: Remove superfluous semicolon.
comdlg32: Indentation fix.
comctl32: Indentation fix.
msvcp100: Avoid signed-unsigned integer comparisons.
amstream: Avoid signed-unsigned integer comparisons.
mapi32: Indentation fix.
krnl386.exe16: Indentation fix.
dsound: Indentation fix.
dbghelp: Indentation fix.
comdlg32: Indentation fix.
comctl32: Indentation fix.
gdi32: Indentation fix.
msvcrt: Indentation fix.
msacm32: Indentation fix.
ole32: Indentation fix.
ole2disp.dll16: Indentation fix.
oleaut32: Indentation fix.
rsaenh: Indentation fix.
shell32: Indentation fix.

André Hentschel (6):
winedbg: Add load/store dual/exclusive and table branch operators to Thumb2 disassembler.
shlwapi/tests: Fix two tests on win8.
mmdevapi/test: Fix tests on win8.
winemapi: List ignored attachments.
msvcrt/tests: Don't test function directly when reporting errno.
kernel32/tests: Don't test function directly when reporting GetLastError().

Ann and Jason Edmeades (1):
cmd: Add set /a support.

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

Austin English (7):
d3d11: Add a stub dll.
atl80: Fix typos in spec file.
msvcrt: Implement _ftol in msvcrt instead of forwarding to ntdll.
msvcrt: Implement memcpy in msvcrt instead of forwarding to ntdll.
widl: write_array_element_type shouldn't return a value.
widl: add_interface_typeinfo should not return a value.
winedbg: stack_backtrace should not return a value.

Caron Jensen (1):
wined3d: Recognize Nvidia GT520 cards.

Christian Costa (11):
d3drm: Load object only if it is top level and requested or if it is part of another object.
d3drm: Handle all materials in material list and create corresponding mesh groups + tests.
d3drm: Handle texture load proc when loading mesh data.
d3drm: Face data size is in number of DWORD.
d3drm: Check params in IDirect3DRMMeshBuilder2Impl_GetVertices + tests.
d3drm: Fix return error code.
dmloader: COM cleanup of IDirectMusicLoader object.
dmloader: Use dump_DMUS_OBJECTDESC to dump data to avoid truncation in TRACE.
dmusic: Set instrument stream position where the instrument begins, not at the beginning of the instruments list. Simplify CustomLoad accordingly.
dmusic: Implement instrument regions loading.
dmusic: Use static variables for instrument header and id instead of using pointer.

Daniel Jelinski (5):
comctl32/tests: Add listview header notification tests.
comctl32/listview: Convert header notifications to ANSI in place.
comctl32/listview: Forward more header notifications to parent window.
user32: Always call ScrollWindowEx in the listbox WM_VSCROLL handler.
msi: Do not convert MaskedEdit contents to uppercase.

Detlef Riekenberg (14):
mlang/tests: Accept the different translation in win8.
advapi32/tests: Accept win8 failure code.
comdlg32/tests: Use win8 failure-code as default result.
api-ms-win-downlevel-advapi32-l1-1-0: Add dll.
api-ms-win-downlevel-shlwapi-l1-1-0: Add dll.
api-ms-win-downlevel-version-l1-1-0: Add dll.
api-ms-win-downlevel-user32-l1-1-0: Add dll.
api-ms-win-downlevel-normaliz-l1-1-0: Add dll.
api-ms-win-downlevel-ole32-l1-1-0.dll: Add dll.
api-ms-win-downlevel-shlwapi-l2-1-0: Add dll.
api-ms-win-downlevel-shell32-l1-1-0: Add dll.
api-ms-win-downlevel-advapi32-l2-1-0: Add dll.
api-ms-win-core-winrt-string-l1-1-0: Add dll.
api-ms-win-core-winrt-error-l1-1-0: Add dll.

Dmitry Timoshkov (12):
windowscodecs: GetThumbnail of the PNG decoder should return NULL interface.
windowscodecs: Implement GetPreview in the PNG decoder.
windowscodecs: Implement GetThumbnail in the PNG frame decoder.
wineps.drv: Add a trace to PSDRV_GetDeviceCaps.
winspool.drv: Add more traces.
wineps.drv: Update default DEVMODE to better indicate initialized fields.
winspool.drv: Correct the DocumentProperties spec entry.
wineps.drv: Use device resolution specified at DC creation time.
wineps.drv: Return ASPECTX/Y which represent current device resolution.
wineps.drv: Keep track of all supported device resolutions.
wineps.drv: Ignore requested resolutions not supported by device.
wineps.drv: Slightly simplify a PPD parser code snippet.

Erich Hoover (1):
advapi32: Support service objects in GetSecurityInfo.

Francois Gouget (4):
wined3d: Remove a stray semi-colon from the spec file.
d3dx9_36/tests: Skip some tests when DXT5 textures are not supported.
winhttp/tests: Make some traces more explicit.
d3dx9_36/tests: Use software vertex processing so the tests can run on Intel GM950 graphics cards.

Frédéric Delanoy (5):
include: Assorted spelling fixes.
po: Update French translation.
cmd: Remove dead assignment (clang).
cmd: Remove dead assignments (clang).
xmllite: Avoid dead initialization (clang).

Hans Leidekker (15):
wininet: Don't perform revocation checks when verifying a certificate.
msi: Don't set the Preselected property for a full reinstall.
advapi32: Add support for filtering credentials on MacOS in CredEnumerateW.
wbemprox: Avoid a crash in get_propval when the query returned no results.
winhttp: Check the server response when downloading a PAC script.
winhttp: Use the hostname instead of the IPv4 address in the URL returned from WinHttpDetectAutoProxyConfigUrl.
msi: Fix a test failure on Windows 8 and conform to the more recent behavior.
winhttp/tests: Fix test failures on Windows 8.
winhttp: Add a missing goto in winhttp_request_get_Status.
wininet: Map socket errors to ERROR_INTERNET_CANNOT_CONNECT in create_netconn_socket.
winhttp/tests: Make sure proxy settings are restored.
pdh: Accept the local machine name in counter paths.
wmiutils: Rename wmiutils.idl to wmiutils_classes.idl.
wmiutils: Add a stub implementation of IWbemPath.
wmiutils: Implement IWbemPath::SetText and IWbemPath::GetText.

Henri Verbeet (25):
d3d10core: Implement d3d10_device_PSSetSamplers().
d3d10core: Implement d3d10_device_PSGetSamplers().
ddraw: Avoid LPDDBLTBATCH.
d3d10core: Get rid of a FIXME in d3d10_device_CreateGeometryShader().
wined3d: Get rid of ENTER_GL / LEAVE_GL.
ddraw: Avoid LPD3DDEVICEDESC7.
d3d10core: Implement d3d10_sampler_state_GetDesc().
d3d10core: Only create unique sampler state objects.
d3d10core/tests: Add a small test for ID3D10Device_CreateSamplerState().
d3d10core: Implement d3d10_blend_state_GetDesc().
d3d10core: Only create unique blend state objects.
d3d10core/tests: Add a small test for ID3D10Device_CreateBlendState().
ddraw: Avoid LPD3DVALUE.
d3d10core: Implement d3d10_depthstencil_state_GetDesc().
d3d10core: Only create unique depthstencil state objects.
d3d10core/tests: Add a small test for ID3D10Device_CreateDepthStencilState().

Huw Davies (5):
usp10: Add the ability to just return the size of the value record.
usp10: PairValueRecord is a variable length struct, so don't use a C array to index into them.
usp10: Glyph class tables are just generic class tables.
usp10: Move the application of pair values to a helper function.
usp10: Add support for format 2 pair adjustments.

Hwang YunSong (1):
po: Update Korean translation.

Jacek Caban (39):
wininet: Fixed handling empty HTTP version string in HttpOpenRequest.
atl: Allow version-based differences in struct layouts.
atl100: Added AtlAddTermFunc implementation (based on atl.dll version).
atl100: Added AtlCallTermFunc implementation (based on AtlModuleTerm).
atl: Don't call HeapFree on module argument in AtlModuleTerm.
atl100: Added AtlUpdateRegistryFromResourceD implementation (based on AtlModuleUpdateRegistryFromResourceD).
atl: Reimplemented AtlModuleUpdateRegistryFromResourceD on top of AtlUpdateRegistryFromResourceD.
atl100: Added AtlLoadTypeLib implementation (based on AtlModuleLoadTypeLib).
atl: Reimplemented AtlModuleLoadTypeLib on top of AtlLoadTypeLib.
jscript: Throw an error if return statement is in eval code.
jscript: Added support for SCRIPTTEXT_ISEXPRESSION.
atl: Added locking to AtlModuleAddCreateWndData.
atl100: Added AtlWinModuleAddCreateWndData implementation (based on AtlModuleAddCreateWndData).
atl80: Fixed some spec file entries.
atl100: Added AtlRegisterClassCategoriesHelper stub.
atl: Merge registrar.c into atl_main.c.
jscript: Moved eval return value logic to specific statement handlers.
jscript: Ensure correct stack state for non-returning expression evaluation in compile_expression.
ole32: Added IMoniker::BindToStorage proxy/stub implementation.
jscript: Properly handle return value evaluation in comma expression.
jscript: Allow poping multiple stack values at the time.
atl100: Added AtlComModuleGetClassObject implementation (based on AtlModuleGetClassObject).
jscript: Fixed Number.toFixed for value 0 with 0 precision.
jscript: Fixed deleting nonexisting properties from member expression.
jscript: Fixed deleting nonexistent identifiers.
jscript: Fixed deleting properties of pure dispatch interface.
jscript: Fixed deleting properties by name from IDispatchEx interface.
jscript: Fixed deleting property by ID from IDispatchEx interface.
urlmon: Added IWinInetInfo and IWinInetHttpInfo proxy/stub implementation.
jscript: Moved string concatenation to helper function.
jscript: Optimized concatenation of empty strings.
atl100: Added AtlWinModuleInit implementation.
atl100: Added AtlWinModuleInit tests.
propvarutil.h: Added InitPropVariantFromInt64 declaration and inline implementation.
atl100: Added AtlWinModuleExtractCreateWndData implementation.
atl100: Added AtlWinModuleExtractCreateWndData tests.
atl80: Updated spec file.
jscript: Added null and undefined values support to to_object.

Jason Edmeades (2):
cmd: Convert the set /a tests to validate better.
cmd: Add more tests for set /a.

Jiang Yike (1):
wined3d: Add recognition for NVIDIA GeForce GTX 660 Ti, 660, 650 Ti and 650.

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

Jörg Höhle (3):
mmdevapi: SetEventHandle is allowed only once.
winealsa: Separate read and write pointers.
mmdevapi: Avoid lock contention after SetEvent.

Ken Thomases (6):
winspool: Close read end of pipe in parent so we can detect child termination.
servicemodelreg: Keep debug channel name to 14 characters or fewer.
winequartz.drv: Rename to winemac.drv ("the Mac driver").
winemac: Implement minimal Create[Compatible]DC() and DeleteDC().
configure: Only enable the Mac driver on Mac OS X 10.6 or later.
winemac: Implement GetDeviceCaps().

Michael Stefaniuc (8):
dnsapi: Use FIELD_OFFSET for the size of a struct with var length array.
dwrite: Don't overallocate memory for a BITMAPINFO.
iphlpapi: Simplify size calculation of structs with var length array.
itss: Don't over-allocate memory for a ITSS_IStorageImpl.
localui: Avoid sizeof on structs with a varlength array.
netapi32: Avoid sizeof on structs with a varlength array.
comctl32/tests: Get rid of a temp buffer.
msi: Use FIELD_OFFSET for the size of structs with a varlength array.

Nikolay Sivov (18):
oledb32: Fix DBPROPSET and DBPROPINFOSET cleanup.
oleaut32: Use correct allocation length (Coverity).
msi: Fix a stream data leak on error (Coverity).
comctl32: Fix a ranges leak on error.
comctl32: Initialize id field for message tests.
msxml3: GetMaxSize() is not a stub.
comctl32: Fix font style when item is bold and hovered in track mode.
msxml3: Some tests to show that DISPID_VALUE properties are handled specially.
oleaut32: Added a test for prop getter invocation with different flags.
msxml3: Add custom handling for DISPID_VALUE for node list.
xmllite: Track internal parser state to select expected node type.
xmllite: Support comment nodes.
xmllite: Remove dead code.
scrrun: Implement GetFileVersion().
version: Remove 'return' from void function.
winedump: Fix argument format for DllMain trace.
msxml3: More tests for DISPID_VALUE properties handling.
shlwapi: Implement IsCharSpaceA().

Piotr Caban (40):
kernel32: Fixed TIME_CompTimeZoneID behavior on dates close to New Year's Eve.
msvcrt: Reimplement _tzset function.
msvcrt: Added _tzset tests.
msvcrt: Fixed mktime and _mktime64 implementation.
msvcrt: Fixed mkgmtime and _mkgmtime64 implementation.
msvcrt: Improved input parameter range check in _gmtime64_s.
msvcrt: Reorganize _localtime64 function.
msvcrt: Fixed _localtime64 implementation.
msvcrt: Fixed get_this_pointer implementation.
msvcr100: Added fread_s implementation.
msvcrt: Fixed floating point numbers printing when flags.Sign=' '.
msvcr100: Added _sprintf_p implementation.
msvcr100: Added _get_timezone implementation.
msvcrt: Added _wtoi_l implementation.
msvcrt: Added _atoi_l implementation.
msvcrt: Added _vfwprintf_l implementation.
msvcrt: Added _fwprintf_l implementation.
msvcrt: Added _mbsnbicoll_l implementation.
msvcrt: Added _mbsnbcoll_l implementation.
msvcrt: Don't flush stream in fputs function.
msvcrt: Support expand_wildcards parameter in __getmainargs function.
msvcrt: Fixed wildcard expanding when path is specified in __getmainargs.
msvcrt: Support expand_wildcards parameter in __wgetmainargs function.
msvcrt: Added __getmainargs tests.
msvcrt: Don't duplicate floating-point number parsing code in MSVCRT__atoflt_l.
msvcrt: Added _atodbl_l implementation.
msvcrt: Added _atodbl tests.
msvcrt: Sync spec files.
wined3d: Recognize Nvidia GT610 card.
msvcrt: Fixed codepage setting code in create_locale.
msvcrt: Fixed locale matching code.
msvcrt: Added more setlocale tests.
msvcrt: Use LC_COLLATE category in strcoll functions.
msvcrt: Use CompareString in wcscoll functions.
msvcrt: Don't fail when _aligned_offset_malloc is used with size=0.
msvcrt: Don't call local_unwind2 when Cookie equals MSVCRT_JMP_MAGIC in longjmp.
msvcrt: Added _set_fmode and _get_fmode implementation.
msvcr100: Added _aligned_msize implementation.
wininet: Fixed CreateUrlCacheEntryW behaviour on URLs without '\' and '/' characters.
wininet: NULL terminate cookie data in load_persistent_cookie function.

Stefan Dösinger (10):
ddraw: Pass the number of vertices to DrawIndexedPrimitive.
ddraw: Move the index buffer growing code to a separate function.
ddraw: Handle DrawPrimitive with a dynamic vertex buffer.
ddraw: Handle DrawIndexedPrimitive via dynamic buffers.
ddraw: Align user vertex data.
d3d8: Use a dynamic vertex buffer for DrawPrimitiveUP.
d3d8: Use dynamic buffers for DrawIndexedPrimitiveUP.
d3d9: Use a dynamic buffer for DrawPrimitiveUP.
d3d9: Use dynamic buffers for DrawIndexedPrimitiveUP.
wined3d: Remove draw_*_primitive_up.

Sylvain Petreolle (1):
setupapi: Add stub for SetupAddToSourceListW.

Printed from Linux Compatible (