Wine release 0.9.41

Alexandre Julliard julliard at
Fri Jul 13 13:00:13 CDT 2007

This is release 0.9.41 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - A number of gdiplus functions.
  - More complete pdh.dll implementation.
  - Support for MSI remote calls.
  - Messaging support in crypt32.dll.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be 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 or CVS
repositories. Check respectively or for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.


Changes since 0.9.40:

Alexander Nicolaysen Sørnes (3):
      comdlg32: fontdlg: Respect the CF_NOSCRIPTSEL flag.
      wordpad: Disable copy/cut in menu when appropriate.
      wordpad: Prompt for saving file changes.

Alexandre Julliard (41):
      configure: Fix the strip command line for Mac OS.
      configure: Export the shared library extension instead of hardcoding .so.
      configure: Don't use a default soname if a library is not found, leave it undefined.
      configure: Don't set LDPATH if not needed.
      configure: Change WINE_GET_SONAME to allow it to be used as a replacement for AC_CHECK_LIB.
      configure: Move the dll checks earlier in the file to make them available for library checks.
      configure: Merge the libhal existence check with the soname check.
      configure: Merge the libcurses existence check with the soname check.
      configure: Merge the libcapi20 existence check with the soname check.
      configure: Merge the libsane existence check with the soname check.
      configure: Make the libcups soname check depend on the header check.
      configure: Make the libjack soname check depend on the header check.
      configure: Make the libfontconfig soname check depend on the header check.
      configure: Make the libssl soname check depend on the header check.
      configure: Make the libjpeg soname check depend on the header check.
      configure: Added checks for libpng.
      ntdll: Add check for null pointer in NtQuerySystemInformation(SystemModuleInformation).
      configure: Merge the libGL existence check with the soname check.
      configure: Merge the libXrandr existence check with the soname check.
      configure: Merge the libXrender existence check with the soname check.
      configure: Merge the libXinerama existence check with the soname check.
      configure: Get rid of the no longer used check for libtxc_dxtn.
      Maketest.rules: Add dependency on IDL headers for crosstest objects.
      configure: Make the libXcursor soname check depend on the header check.
      configure: Make the libXi soname check depend on the header check.
      configure: Merge the libfreetype existence check with the soname check.
      configure: Merge the libX11 and libXext existence check with the soname check.
      configure: We no longer need the shared library extension.
      aclocal: Add macros for logging messages about missing features.
      configure: Move notices about missing features next to the corresponding checks.
      configure: Add a few more notices for missing packages.
      include: Add some definitions for manifest resources.
      winedump: Add RT_MANIFEST resource type.
      configure: Fix typo in liblcms notice check.
      kernel32: Implemented GetTickCount64.
      user32/tests: Flush messages more aggressively in a couple of tests.
      msi/tests: Comment out call to function that is still a stub in Wine.
      user32: Check both A and W proc for previously allocated winprocs.
      user32: Allocate a dual A/W winproc for DefWindowProc.
      dnsapi: Fix some potential infinite loops because of an unsigned loop counter.
      wldap32: Fix some potential infinite loops because of an unsigned loop counter.

Anatoly Lyutin (1):
      cmd: Use toupperW instead of toupper.

Andrew Talbot (10):
      ole32: Constify some variables.
      oleaut32: Constify some variables.
      ole32: Constify some variables.
      winelib: Cast-qual warnings fix.
      ole32: Constify a variable (and fix a typo concerning its level of indirection).
      ole32: Cast-qual warnings fix.
      comdlg32: Cast-qual warning fix.
      ole32: Cast-qual warning fix.
      winedump: Cast-qual warnings fix.
      winedump: Cast-qual warnings fix.

Aric Stewart (4):
      imm32: Implementation of GCS_CURSORPOS.
      include: Add a ddk header for imm.
      imm32: Implement Locking/Unlocking IMC and IMCC functions.
      imm32: Use the COMPOSITIONSTRING in hCompStr.

Ben Hodgetts (2):
      ws2_32: Don't tell users to run Wine as root when sockets not creatable.
      winecfg: Clean up Graphics tab and remove broken neutral translation.

Bernd Buschinski (1):
      gdiplus: Fix test typo/compile error.

Chris Robinson (4):
      winemp3: Check the right macro when defining TRUE.
      winemp3: Use head_check to check for valid headers.
      winemp3: Remove global mpstr pointer.
      winemp3: Remove function declarations with no definition and unused macros.

Damjan Jovanovic (2):
      shell32: DragQueryFile doesn't count the null terminator.
      ntdll: Use the win16 current directory for win16 processes.

Detlef Riekenberg (4):
      setupapi: Avoid crash in SetupCloseInfFile.
      advpack+setupapi: Remove unneeded checks before SetupCloseInfFile.
      ntdll: Avoid crash with WINEDEBUG=+snoop.
      printui: Parse args for PrintUIEntryW.

Dmitry Timoshkov (4):
      gdi32: Do not report an error if a requested to add font is already loaded.
      include: Add HandleToUlong, UlongToHandle, UintToPtr, UlongToPtr compatibility macros.
      ntdll: Remove an artificial limitation in NtQuerySecurityObject.
      shlwapi: Fix some spec entry definitions.

Emmanuel Maillard (1):
      winecoreaudio: MIDIIn_MessageHandler: Fix non-SysEx messages parsing.

Evan Stade (50):
      oleaut32: Added support for decoding some PNG files.
      oleaut32: Save load time format of pictures.
      gdiplus: Use SaveDC, RestoreDC in GdipDrawLineI.
      gdiplus: Call EndPath() in GdipDrawLineI in case there is an open path.
      gdi32: Don't access DC in PolyDraw after releasing handle.
      gdiplus: Added SetPenEndCap.
      gdiplus: Rendering of linecaps.
      gdiplus: Added linecap rendering for GdipDrawBezier.
      gdiplus: Public declaration of GdipSetPenEndCap.
      gdiplus: Added GdipAddPathLine2.
      gdiplus: Added GdipClosePathFigure.
      gdiplus: Added GdipClosePathFigures.
      gdiplus: Added GdipGetPointCount.
      gdiplus: Added GdipGetPathPoints.
      gdiplus: Added GdipGetPathTypes.
      gdiplus: Updated draw_pie to use SaveDC/RestoreDC.
      gdiplus: Updated GdipDrawRectangleI.
      gdiplus: GdipDrawCurve2 now uses SaveDC()/RestoreDC() and end caps.
      gdiplus: Fixed a bug in helper function draw_polybezier.
      gdiplus: Make LineCapArrowAnchor look more like it does in windows.
      gdiplus: Added constructor and destructor test for gdiplus paths.
      gdiplus: Fixed bug in GdipGetPathPoints().
      gdiplus: Added a test for GdipAddPathLine2.
      gdiplus: Changed calls to floor to floorf.
      gdiplus: Moved two inline helpers to the header.
      gdiplus: Added GdipAddPathArc.
      gdiplus: Added GdipAddPathArc test.
      gdiplus: Updated GdipDrawArc to use SaveDC()/RestoreDC()/line caps.
      gdiplus: Updated GdipDrawLines to use SaveDC()/RestoreDC()/end caps.
      gdiplus: Added GdipStartPathFigure.
      gdiplus: Added GdipDrawPath.
      gdiplus: Added draw_polybezier error checking.
      gdiplus: Added draw_polyline error checking.
      gdiplus: Added basic matrix implementation.
      gdiplus: Added GdipTransformMatrixPoints.
      gdiplus: Added GdipCreateMatrix2 test.
      gdiplus: Added GdipTransformPath.
      gdiplus: Added GdipGetPathWorldBounds.
      gdiplus: Fixed memory leak in GdipDeletePath.
      gdiplus: Added GdipTransformMatrixPoints test.
      gdiplus: Added GdipGetPathWorldBounds test.
      gdiplus: Changed the way the direction of the endcap is calculated to make LineCapArrowAnchor direction match Windows better.
      gdiplus: Added GdipSetPenLineJoin.
      gdiplus: Use passed pen in GdipAddPathWorldBound.
      gdiplus: Added more GdipGetPathWorldBounds tests.
      gdiplus: Improved GdipGetPathWorldBounds handling of both matrix and pen's effect on bounding box.
      gdiplus: Added GdipGetPathFillMode.
      gdiplus: Added GdipResetPath.
      gdiplus: Added GdipAddPathPath.
      gdiplus: Added GdipAddPathPath test.

Francois Gouget (3):
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      Assorted spelling fixes.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.

H. Verbeet (8):
      wined3d: Call IWineD3DDeviceImpl_FindTexUnitMap for cards without support for NV_REGISTER_COMBINERS as well.
      wined3d: Only call activate_dimensions() if the texture is used.
      wined3d: Only set GL_SHADER_OPERATION_NV to GL_NONE for supported units.
      wined3d: In tex_colorop() & tex_alphaop(), only check the mapped stage against GL_LIMITS(textures) if the texture is used.
      wined3d: Cleanup shader_glsl_load_psamplers().
      wined3d: Implement dsx & dsy shader instructions.
      wined3d: Advertise A32B32G32R32F render target support.
      wined3d: Advertise VTF support.

Hans Leidekker (9):
      dwmapi: Add a stub implementation for DwmIsCompositionEnabled.
      pdh: Add tests for opening and closing queries.
      pdh: Add an uptime counter source based on GetTickCount.
      pdh: Add tests for Pdh{Add, Remove}Counter and PdhCollectQueryData.
      pdh: Implement and test PdhSetCounterScaleFactor and PdhGetFormattedCounterValue.
      pdh: Implement and test PdhGetRawCounterValue.
      pdh: Implement and test PdhGetCounterInfo{A, W} and PdhGetCounterTimeBase.
      pdh: Use GetTickCount64 instead of GetTickCount.
      pdh: Fix two typos.

Huw Davies (6):
      winex11.drv: Pass root_window to XCreatePixmap to avoid BadDrawable errors.
      winex11.drv: Move the PictFormats into an array.
      winex11.drv: Use global Pictures for the tiles.
      gdi32: Using a bitmap font as the fallback sans serif is a very bad idea.
      kernel32: Swap incorrect use of buffers.
      kernel32: SetNamedPipeHandleState() is a stub, so for now don't check its return value.

James Hawkins (56):
      msi: Implement MsiSourceListGetInfoA.
      msi: Add tests for MsiSourceListGetInfo.
      msi: Validate MsiSourceListGetInfo parameters.
      msi: Return ERROR_BAD_CONFIGURATION if the SourceList key does not exist.
      msi: Return ERROR_SUCCESS if the PackageName property is not present.
      msi: Add the IWineMsiRemotePackage interface.
      msi: Add the IWineMsiRemoteCustomAction interface.
      msi: Handle remote calls to MsiGetActiveDatabase.
      msi: Handle remote calls to MsiGetProperty.
      msi: Handle remote calls to MsiSetProperty.
      msi: pcchValue represents the length of szValue in TCHARS, not bytes.
      msi: Add support for the MSICODE_PATCH option.
      msi: Add tests to show when the SourceList is published to the registry.
      msi: PackagePath must also include the package name.
      msi: Delay publishing of the SourceList until the PublishProduct action.
      msi: Unpublish the product when it is entirely removed.
      msi: Only publish the product if at least one feature is to be installed.
      msi: Set the WindowsInstaller value in RegisterProduct instead of PublishProduct.
      msi: Add tests for MsiQueryFeatureState.
      msi: Open the correct key and return INSTALLSTATE_ADVERTISED if it's missing.
      msi: Return INSTALLSTATE_ADVERTISED if the component list is empty.
      msi: Return INSTALLSTATE_BADCONFIG if we can't decode the first component.
      msi: Read the components state directly from the registry.
      msi: Handle remote calls to MsiProcessMessage.
      msi: Handle remote calls to MsiDoAction.
      msi: Handle remote calls to MsiSequence.
      msi: Handle remote calls to MsiGetTargetPath.
      msi: Handle remote calls to MsiGetSourcePath.
      msi: Handle remote calls to MsiSetTargetPath.
      msi: Handle remote calls to MsiGetMode.
      msi: Handle remote calls to MsiSetFeatureState.
      msi: Handle remote calls to MsiGetFeatureState.
      msi: Handle remote calls to MsiGetComponentState.
      msi: Handle remote calls to MsiSetComponentState.
      msi: Handle remote calls to MsiGetLanguage.
      msi: Handle remote calls to MsiSetInstallLevel.
      msi: Fix use of BSTRs.
      msi: Handle remote calls to MsiFormatRecordW.
      msi: Forward MsiFormatRecordA to MsiFormatRecordW.
      msi: Handle remote calls to MsiEvaluateCondition.
      msi: Enable remote custom actions.
      msi: Match the changes made by the hand-generated and API-generated transforms.
      msi: Delete msifile after the tests.
      msi: Test adding columns with data in a transform.
      msi: Handle adding columns in transforms.
      msi: Check for NULL transform, as there may be no transforms for the _Columns or _Tables tables.
      msi: Fix current _Property table tests and add more tests.
      msi: Add tests for adding properties in a transform.
      msi: Add tests for adding properties with a transform during an install.
      msi: Fix a copy and paste error.
      msi: Reload properties as they may have been changed by a transform.
      msi: Fix automation.c compile for MSVC.
      msi: Fix three tests that were failing in Windows.
      msi: Fix compilation in MSVC.
      msi: Add a test for installing from different current working directories.
      msi: Add a test for running an ADMIN install.

Juan Lang (44):
      crypt32: Use skip to avoid failures where support is missing.
      crypt32: Don't fail when CryptVerifyCertificateSignatureEx is missing, use skip (and get rid of unnecessary indenting).
      crypt32: Accept OSS errors.
      crypt32: Accept OSS errors as well.
      crypt32: Accept ERROR_BADKEY in addition to ERROR_INVALID_HANDLE.
      crypt32: Accept ERROR_INVALID_PARAMETER in addition to ERROR_PATH_NOT_FOUND (and remove no-longer-useful checkFileStoreFailure).
      crypt32: Pass function pointers to CryptMsgBase_Init rather than rely on callers to initialize them.
      crypt32: Add more tests for opening a data message for encoding.
      crypt32: Make a copy of a passed-in stream info rather than assuming the pointer will live forever.
      crypt32: Test that inner content OID is ignored for data messages.
      crypt32: Add tests for streamed encoding of data messages.
      crypt32: Test and fix CryptMsgGetParam for streamed messages.
      crypt32: Add a stub decode message implementation.
      crypt32: Implement getting the type of a decode message.
      crypt32: Add some tests for updating decode messages.
      crypt32: More decode message update tests.
      crypt32: Implement CryptSIPLoad.
      crypt32: Implement CryptSIPGetSignedDataMsg, CryptSIPPutSignedDataMsg,
      rsaenh: Get rid of the hash idle state, native doesn't behave as though it has one.
      crypt32: Make some encoding functions available outside encode.c.
      crypt32: Implement streamed encoding of definite-length data messages.
      crypt32: Add open tests for hash messages.
      crypt32: Add tests for updating hash messages opened to encode.
      crypt32: Test opening hash messages to encode with streaming.
      crypt32: Add a stub hash message implementation.
      crypt32: Add tests for getting hash message params.
      crypt32: Implement getting a hash message's hash value.
      crypt32: Simplify hash value tests.
      crypt32: Test updating hash messages with NULL stream output function.
      crypt32: Partially implement updating hash messages.
      crypt32: Add more missing defines.
      crypt32: Implement getting hash message version.
      crypt32: Add tests for hash message encoding.
      crypt32: Copy data in hash message update.
      crypt32: Add a helper function to copy params.
      crypt32: Don't check if msg is NULL, tests show native doesn't either.
      crypt32: Detached hash messages don't contain the content, so don't make a copy of it.
      crypt32: Add tests for retrieving the content of a non-finalized (detached) message.
      crypt32: Introduce an algorithm id encoding function that encodes missing parameters as NULL
      crypt32: Implement retrieving a hashed message's content.
      crypt32: Relax a test, the specific error isn't so important.
      crypt32: Change finalized from a boolean to a state and use it to simplify message updating.
      crypt32: Introduce an updated state, and use it to remove boolean "begun".
      crypt32: Update comments about hash message version numbers.

Julio E. Gonzalez P (1):
      ntdll: Add PYT and PYST time zones.

Kai Blin (1):
      ws2_32: Handle IPv6 in WSAStringToAddress.

Ken Thomases (6):
      winecoreaudio: Enable DirectSound HEL mode for output.
      winecoreaudio: Enable DirectSound HEL mode for input.
      winecoreaudio: Improve safety of iterations when returning WAVEHDRs to client.
      winecoreaudio: Correct the AudioBufferList allocated for input.
      winecoreaudio: Protect against AudioUnitRender clobbering our buffer list.
      winecoreaudio: Report format error on sample rate mismatch when opening wave-in device.

Kovács András (1):
      d3d10: Add stub for d3d10.dll.

Lei Zhang (2):
      start.exe: Put double quotes around arguments with spaces.
      winex11.drv: Remove old dnd code.

Maarten Lankhorst (6):
      winealsa: Silence the buffer warning more often.
      dsound: Revert "dsound: Disable property sets if hardware doesn't support it.".
      dsound: Clean up some unused variables.
      dsound: Remove some more unused variables.
      dsound: Fix division by zero in DSOUND_Calc3DBuffer.
      dsound: Simplify IDirectSoundBufferImpl_GetCurrentPosition.

Mark Adams (2):
      iphlpapi: Add support for GetTcpTable on Mac OS X.
      iphlpapi: Fix byte ordering of Linux ports.

Markus Gömmel (2):
      comctl32/datetime: Added a missing InvalidateRect to update display after WM_ENABLE.
      user32: Center MessageBox dialogs to desktop, as Windows does.

Michael Stefaniuc (2):
      ntdll: Fix missing unlock on error path. Found by Smatch.
      msvcrt: Remove superfluous casts of void pointers to other pointer types.

Mikołaj Zalewski (2):
      comctl32: toolbar: The iImage in TBN_GETDISPINFO should be initialized to -1.
      comctl32: toolbar: We should send TBN_GETDISPINFOW even for ANSI controls (with testcase).

Misha Koshelev (7):
      gdi32: Slightly simplify result handling in PolyDraw.
      urlmon/tests: Make http protocol mime type test pass on native.
      urlmon: Improve ObtainUserAgentString conformance to native.
      urlmon/tests: Add tests for ObtainUserAgentString.
      urlmon: Implement HttpProtocol.
      urlmon: Fix HttpProtocol_Start and strndupW to work properly with native wininet.
      urlmon: Make HttpProtocol conform with native wininet on wine.

Paul Vriens (29):
      advapi32/tests: Add tests for OpenSCManagerA.
      user32/tests: Use skip.
      user32/tests: Use skip.
      advapi32/tests: Use skip when we don't have enough rights.
      advpack/tests: Create the temporary inf-file in a directory where we are allowed to write.
      kernel32/tests: Use skip when functions are not available.
      kernel32/tests: Don't crash on win98.
      kernel32/tests 2/2: Use skip for not implemented function.
      advapi32/tests: Use skip for not implemented function.
      secur32/tests: Use skip when functions are not available.
      advapi32/tests: Add tests for OpenServiceA.
      advapi32/tests: Add tests for CloseServiceHandle.
      ddraw/tests: Use skip instead of trace.
      ddraw/tests: Use skip instead of trace.
      kernel32/tests: Add a forgotten if statement.
      advapi32: Handle to Service Control Manager is checked first.
      advapi32: Create specific access rights for service control manager handles.
      gdiplus: Don't use struct member before NULL check (Coverity).
      advapi/service: Simplify DeleteService by using RegDeleteTree.
      advapi/service: Fix possible handle leak.
      advapi/service: First tests (and fixes) for CreateService.
      advapi/service: Check if we have enough access rights to create a service.
      advapi/service: Check for empty servicename and binaryname.
      programs/cmd: Do the assignment after the return to avoid a missing free() (Coverity).
      advapi/service: Create specific access rights for service handles.
      advapi/service: Check servicetype and starttype.
      advapi32/tests: Use skip instead of trace.
      crypt32/tests: Skip test if we don't have enough rights.
      mscms/tests: Skip tests if we don't have enough rights.

Pedro Araujo Chaves Jr (1):
      winspool.drv: Fallback to the first found printer as default printer.

Peter Dons Tychsen (1):
      winex11: Fix X11DRV_DIB_GetImageBits() when target bitmaps are larger than fetched.

Rob Shearman (9):
      secur32: Don't free the password in InitializeSecurityContextW to enable the credentials handle to be re-used in further InitializeSecurityContextW calls.
      secur32: Add tests for multiple use of a credential handle.
      rpcrt4: Translate between NCA and RPC status codes.
      rpcrt4: Call RPCRT4_Send directly from PKT_RECEIVE handler in server.
      rpcrt4: Return a fault packet if the proc num exceeds the index of the last function available for the interface.
      ntdll: The impersonation level in NtDuplicateToken should be taken from the SecurityQualityOfService member of ObjectAttributes if present.
      rpcrt4: Make binding to an interface a function of RpcAssoc instead of
      msxml3: Implement IXMLDOMNode::get_text for CDATA, processing instruction and comment nodes.
      mshtml: Implement HTMLElement_insertAdjacentHTML and HTMLElement_insertAdjacentText.

Romain Iehl (3):
      dsound: Fix bug preventing correct calculation of the sound parameters
      dsound: Simplify the calculation of sound attenuation due to distance.
      dsound: Correct field access.

Stefan Dösinger (19):
      wined3d: rsq and rcp use the .w component if no swizzle is given.
      wined3d: Select onscreen contexts based on the thread id.
      wined3d: Create multiple contexts for onscreen render targets.
      ddraw: Z buffers can be attached to offscreen d3d devices.
      ddraw: Fix an incorrect iface->impl cast.
      ddraw: Materials in the execute buffer are handles.
      ddraw: D3DOP_BRANCHFORWARD includes the current instruction size.
      ddraw: Read the world matrix correctly.
      ddraw: Implement IDirect3DViewport3::TransformVertices.
      wined3d: Offscreen rendering from foreign threads.
      ddraw: Update the wined3d matrix if a current matrix handle is modified.
      ddraw: Y coords are inversed.
      wined3d: Do not set streamIsUP in DrawPrimitiveStrided.
      wined3d: Implement high order patches.
      wined3d: Initialize surfaces at creation.
      wined3d: Print the fixed and unfixed vertex warning only when needed.
      wined3d: Add CTXUSAGE_CLEAR context usage.
      wined3d: Make ActivateContext a bit smaller.
      wined3d: Store the last active thread.

Thomas Weidenmueller (2):
      shell32: Set current directory when executing files in a shell view.
      shlwapi: Use publicly defined structure DATABLOCK_HEADER instead of redefining it locally.

Tim Schwartz (1):
      net.exe: Converted strings to resources.

Vitaliy Margolen (9):
      dinput: Correct test - use appropriate mouse state structure.
      dinput: Keep the list of all the dinput devices created for each IDIrectInput object.
      dinput: Keep a list of all IDirectInput objects and check it instead of refcount to create/destroy hook thread.
      dinput: Export Mouse and Keyboard GUIDs.
      dinput: Handle multiple keyboard and mouse devices.
      dinput: Rename set_dinput_hook and call it from the base class.
      dinput: Clear static variables after releasing hooks.
      dinput: Convert IDirectInput into multi-interface object.
      dxdiagn: Add reporting of some display related information.

Alexandre Julliard
julliard at
-------------- next part --------------
A non-text attachment was scrubbed...
Name: wine-0.9.41.diff.bz2
Type: application/x-bzip2
Size: 223778 bytes
Desc: not available
Url :

More information about the wine-releases mailing list