Wine release 0.9.37

Alexandre Julliard julliard at
Fri May 11 12:54:33 CDT 2007

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

What's new in this release:
  - MSI automation with JScript/VBScript support.
  - Various MSHTML improvements.
  - The usual assortment of Direct3D fixes.
  - Support for a few more exe protection schemes.
  - 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.36:

Alexandre Julliard (24):
      winebrowser: Don't output debug traces by default.
      server: Give system APCs priority over signaled objects.
      kernel32: Don't skip directory symlinks when looking for a specific file.
      widl: Don't declare a global binding handle when using an implicit handle.
      server: Store valid file options in pseudo file descriptors.
      server: Infrastructure to return a wait handle for blocking ioctls.
      server: Allocate the wait event for FSCTL_PIPE_LISTEN on the server side.
      server: Allocate the wait event for FSCTL_PIPE_WAIT on the server side.
      Fix minor differences in the formatting of the license notices.
      Get rid of some empty source files, our makefiles no longer require them.
      configure: Only check for the static versions of libicu.
      kernel32: Disable FT_Thunk entry point when Windows version is NT.
      configure: Added rpath support for Solaris.
      kernel32: Set the dll file name with the correct case to make EXECryptor happy.
      configure: Fixed typo in libicu check.
      ntdll: Support setting the CPU context on the current thread without segment registers.
      server: Add support for generic device objects managed from the client side.
      server: Add support for queuing ioctl calls to a device.
      server: Add request to retrieve the next pending ioctl call for a device manager.
      server: Add support for retrieving results of queued ioctls once they are done.
      advapi32: Fix set process request, a pipe instance can only handle one request.
      psapi: Don't print output parameters as strings.
      kernel32: Fix typo in CreateActCtxA.
      server: Stop exporting the console_input structure. Get rid of console.h.

Andrew Talbot (39):
      advapi32: Exclude unused headers.
      dsound: Constify some variables.
      crypt32: Exclude unused headers.
      dswave: Constify a variable.
      compstui: Exclude unused headers.
      comdlg32: Exclude unused headers.
      gdi32: Constify some variables.
      gdi32: Constify some variables.
      dbghelp: Exclude unused headers.
      ddraw: Exclude unused headers.
      gphoto.ds: Constify a variable.
      devenum: Exclude unused header.
      dmstyle: Exclude unused headers.
      dmband: Exclude unused headers.
      dmusic32: Exclude unused headers.
      dmime: Exclude unused headers.
      dxerr9: Exclude unused header.
      kernel32: Constify a variable.
      imaadp32.acm: Constify some variables.
      dxerr8: Exclude unused header.
      dnsapi: Exclude unused header.
      dpnet: Exclude unused headers.
      dsound: Exclude unused headers.
      ifsmgr.vxd: Constify some variables.
      inseng: Exclude unused header.
      imagehlp: Exclude unused headers.
      infosoft: Exclude unused header.
      itss: Exclude unused headers.
      kernel32: Exclude unused headers.
      kernel32: Exclude unused headers.
      kernel32: Exclude unused headers.
      kernel32: Exclude unused headers.
      mcicda: Exclude unused headers.
      localspl: Exclude unused headers.
      mciwave: Exclude unused header.
      mapi32: Exclude unused header.
      mscms: Exclude unused headers.
      msacm32: Exclude unused headers.
      mlang: Exclude unused headers.

Andrey Turkin (6):
      dbghelp: Zero-terminate module name in minidump.
      shlwapi: Implement IConnectionPoint_SimpleInvoke.
      hhctrl.ocx: Update HtmlHelp and its commands definitions, and partially implement data A->W translation.
      hhctrl.ocx: Do not try to dereference NULL pointer if CreateHelpViewer failed.
      hhctrl.ocx: Recognize and use topic specification in url or in data.
      shlwapi: Implement IUnknown_CPContainerInvokeParam.

Aric Stewart (2):
      ole32: Accelerators, like for the menu ones, should not fire on the keyup message.
      gdi32: GetGlyphOutline needs to look at linked fonts as well.

Ben Taylor (3):
      wineshelllink: Improve /bin/sh and awk compatibility.
      wineinstall: Use `wine --version` instead of `which wine`.
      winegcc: Allow -R and -z linker options.

Bernard Ladenthin (2):
      browseui: Implement ClassFactory_LockServer in browseui dll.
      browseui: Fixed ClassFactory_LockServer implementation.

Bill Medland (2):
      kernel32/tests: Boundary test cases for SystemTimeToFileTime and GetDateFormat.
      oleaut32/tests: Some boundary tests on VarBstrFromDate.

Damjan Jovanovic (2):
      wine.inf: Move explorer to the windows directory.
      shlwapi: Fix UrlCanonicalizeW's handling of filesystem paths.

Dan Hipschman (7):
      widl: Get rid of the typeref_t structure, simplify code.
      widl: Get rid of the tname field of var_t, simplify code.
      widl: Add string_of_type function, prettify code.
      widl: Remove redundant get_var_vt function.
      widl: Simplify make_safearray.
      widl: Remove dead code in write_msft.c.
      widl: Remove var_t's ptr_level field and start write_pointers.

Dan Kegel (1):
      advapi: Improve SetEntriesInAclA stub.

Detlef Riekenberg (8):
      localspl: Code cleanup for XcvDataPort_AddPort.
      winspool: Return the correct errorcode in OpenPrinter (Xcv).
      winspool: Avoid crash on NULL parameter (XcvOpenPort in OpenPrinter).
      localui: Implement AddPortUI.
      localui: Implement ConfigurePortUI for LPT.
      localui: Prefer builtin version.
      localui: Add German resources.
      ddraw/tests: Fix typos in messages.

Dmitry Timoshkov (6):
      comctl32: Remove a stray back slash.
      riched20: Add the tests for EM_SETTEXTEX/EM_GETTEXTEX in addition to WM_SETTEXT/WM_GETTEXT, make them pass under Wine.
      gdi32: Handle errors in WineEngAddFontResourceEx.
      gdi32: AddFontResource should return a number of added font faces.
      advapi32: Add FILE_FLAG_BACKUP_SEMANTICS to the flags passed to CreateFileW to be able to get security information for directories as well as for files.
      user32: Windows doesn't send the initialization messages to a dialog if a passed in dlgProc is NULL.

Emmanuel Maillard (4):
      winecoreaudio: Handle non System Exclusive messages.
      winecoreaudio.drv: MIDIIn_MessageHandler: Remove a TRACE and simplify skipping SysEx.
      winecoreaudio.drv: Create only one MIDIOutPort and one MIDIInPort for all destinations and sources.
      winecoreaudio.drv: Implement MIDIOut_Data when device is a MOD_MIDIPORT.

Eric Pouech (2):
      kernel32: Implemented CreateActCtxA on top of CreateActCtxW.
      kernel32: Set the new definition for an activation context, and implement adding/releasing references to it.

Francois Gouget (8):
      d3drm/tests: Add missing '\n' to ok() calls.
      d3drm: Fix compilation on systems that don't support nameless unions.
      msi/tests: Add missing '\n' to ok() call.
      Assorted spelling fixes.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      msi/tests: Add missing '\n' to ok() calls.
      crypt32: Add missing '\n' in FIXME() call.
      wined3d: Add a missing '\n' to a trace.

H. Verbeet (16):
      wined3d: Flip the coordinate system rather than the coordinates itself for onscreen surfaces in stretch_rect_fbo.
      wined3d: Make the IWineD3DDeviceImpl_ColorFill TRACE a bit more useful.
      wined3d: Bind GL_FRAMEBUFFER_EXT rather than GL_DRAW_FRAMEBUFFER_EXT in color_fill_fbo.
      wined3d: Improve a few VBO traces.
      d3d: Fix the surface locking rectangle validation.
      d3d9: Add a surface locking test.
      d3d8: Add a surface locking test.
      ddraw: Add a surface locking test.
      wined3d: Remove some redundant fields from IWineD3DBaseTextureImpl.
      wined3d: Handle the ps_3_0 vPos field.
      wined3d: Unload vertex weight data in case of EXT_VERTEX_WEIGHTING as well.
      wined3d: Calling glDisableClientState() from loadVertexData() is redundant.
      wined3d: Split texture coordinate loading from loadVertexData().
      wined3d: Load texture coordinates even if no texture is bound to that stage at this time.
      wined3d: Trace the VBO and stream number as well in drawPrimitiveTraceDataLocations.
      wined3d: WINED3DSIO_POW should use the absolute value of the first source register.

Huw Davies (2):
      oleaut32: Remove useless initialization of an [out] parameter.
      ole32: Cope with a realloc returning a different pointer.

Jacek Caban (12):
      mshtml: Fix offset in OnDataAvailable call.
      mshtml: Remove auto detection of Mozilla and Mozilla ActiveX control.
      mshtml: Reimplement IHTMTxtRange on top of nsIDOMRange.
      mshtml: Added IHTMLTxtRange::get_htmlText implementation.
      mshtml: CGID_Undocumented is CGID_DocHostCmdPriv.
      mshtml: Added IHTMLBodyElement::CreateTextRange implementation.
      mshtml: Split code from OnDataAvailable.
      mshtml: Don't crash in OnStopBinding if This->binding is null.
      mshtml: Move AddRequest call to the separated function.
      mshtml: Split IPersistMoniker::Load.
      mshtml: Added IPersistStreamInit::Load implementation.
      mshtml: Added IPersistStreamInit::Load test.

James Hawkins (14):
      msi: Add tests that show that costing is run in both the UI and Execute sequences.
      msi: Reset the folder's resolved target before setting the target in CostFinalize.
      msi: Run the costing actions for both the UI and execute sequences.
      msi: Only allow valid styles in msi_dialog_get_style.
      msi: Add the ES_AUTOHSCROLL style to the edit control.
      msi: Set the text limit of the edit control if the limit is given.
      msi: Remove incorrect ERR as messages can be sent before the control is created.
      msi: Remove debugging printf statements.
      msi: Add stub handlers for the remaing standard actions that reference tables.
      msi: Add handling for the ReinstallMode control event.
      msiexec: /quiet is the same options as /qn.
      msi: Check the volume name when changing media.
      msi: Deformat the key path before opening the key.
      msi: Only check the volume label for every media after the first disk.

Jason Edmeades (1):
      xcopy: Output to console in Unicode if possible, or OEM codepage otherwise.

José Manuel Ferrer Ortiz (1):
      Some Spanish translation updates.

Juan Lang (4):
      wintrust: Fix typo.
      wintrust: Implement WintrustLoadFunctionPointers.
      wincrypt.h: Add missing definitions.
      crypt32: Implement CertEnumSystemStore.

Ken Thomases (1):
      winebrowser: Don't put the default mailers or browsers into the registry.

Kevin Koltzau (1):
      winbase.h: Define FILE_FLAG_OPEN_REPARSE_POINT.

Kirill K. Smirnov (4):
      server: Fix access check in screen buffer handling.
      kernel32/tests: Add tests for console screen buffer.
      server: Move console codepages to the server.
      kernel32/tests: Add tests for console codepages.

Konstantin Kondratyuk (1):
      ntdll: Correct a copy/paste mistake in NtWriteFile.

Laurent Vromman (1):
      gdi32: Complete WidenPath implementation.

Louis Lenders (2):
      kernel32: Add stub for BindIoCompletionCallback.
      gdi32: Add check for null pointer in SetDIBitsToDevice.

Maarten Lankhorst (2):
      winealsa: Improve sound mixer detection.
      winmm: Use criticalsection for determining wether timer is synchronously killable.

Marcus Meissner (3):
      riched32: Avoid implicit time().
      server: set_server_state needs to be called with non-NULL server.
      msi/tests: Increase buffer size a bit.

Mikołaj Zalewski (4):
      user32: Fix TabbedTextOut.
      comctl32: treeview: Make the focus test pass under Windows XP.
      comctl32: treeview: Treeviews shouldn't be sending NM_TOOLTIPSCREATED (with testcase).
      shell32: Handle invalid cbSize in Shell_NotifyIcon[AW].

Misha Koshelev (32):
      msi: Add OLE automation conformance test.
      msi: Merge OLE automation conformance tests.
      msi: Add base class for OLE automation objects.
      msi: Expand IDL file to contain some OLE automation interface functions.
      msi: automation: Implement Record::StringData.
      msi: automation: Implement View::Execute, Fetch, and Close.
      msi: automation: Implement Database::OpenView.
      msi: automation: Implement a few functions from the Session object.
      msi: automation: Implement Installer::OpenPackage.
      msi: automation: Expose Installer object.
      msi: Added handlers for JScript/VBScript actions that call one script function.
      msi: Add JScript/VBScript support.
      msi/tests: automation: Free memory after string conversion.
      msi/tests: automation: Convert method names to Unicode on the fly to simplify adding new tests.
      msi/tests: automation: Integrate test_createrecord_and_version properly.
      msi: script: Discriminate properly between JScript and VBScript.
      msi/tests: automation: Session::Installer conformance test.
      msi: automation: Store parent Installer object in Session.
      msi: automation: Implement Session::Installer.
      msi: automation: Use proper parameter names.
      msi: automation: Generalize interface-specific data storage in AutomationObject.
      msi/tests: automation: Add tests for Installer::Products and Installer::ProductState.
      msi: automation: Implement Installer::Products and Installer::ProductState.
      msi: automation: Output FIXMEs for unknown member names.
      msi/tests: automation: Add test for Installer::RegistryValue.
      msi/tests: automation: Simplify ok_exception.
      msi: automation: Clear all VT_BSTR variants returned by DispGetParam.
      msi: automation: Display errors on create_automation_object failure.
      msi: automation: Move VariantClears out of specific case statements when possible.
      msi: automation: Display an error on create_session failure.
      msi/tests: automation: Add more tests for Installer::RegistryValue.
      msi: automation: Implement Installer::RegistryValue.

Mounir IDRASSI (6):
      advapi32: Check for error in CryptEnumProviderTypesA and CryptEnumProvidersA.
      wincrypt.h: Add missing definitions.
      rsaenh: Fix read_key_container bug that prevents CryptAcquireContext from correctly loading the keys.
      rsaenh: Use the correct registry key in RSAENH_CPAcquireContext.
      crypt32: Correct the implementation of CertCreateSelfSignCertificate.
      rsaenh: Add support for mandatory parameters to RSAENH_CPGetProvParam.

Paul Vriens (3):
      setupapi/tests: SetupQueryInfOriginalFileInformationA is not available on win98.
      msi/tests: Properly cleanup after each test.
      d3drm/tests: d3drm is removed from Windows Vista.

Peter Oberndorfer (3):
      ntdll: Call NtQueryAttributesFile in RtlDoesFileExists_U.
      ntdll: Use correct prototype for thread function.
      rpcss: Use correct prototype for thread function.

Rob Shearman (26):
      dsound: Implement QueryInterface for the class factory objects.
      dsound: Implement QueryInterface for KsPropertySet objects.
      winex11.drv: Remove an unneeded include.
      rpcrt4: Print the correct values when warning about a bad frag length.
      atl: Implement AtlComQIPtrAssign.
      atl: Add stubs for AtlIPersistStreamInit_Load and AtlIPersistStreamInit_Save.
      setupapi: SetupCopyOEMInfW should preserve the basename when copying the inf file to the inf directory if possible.
      ole32: Remove an unnecessary QueryInterface in CoRegisterClassObject that CoMarshalInterface will already do.
      setupapi: The inf file containing the SourceDisksFiles and SourceDisksNames sections is the same as hinf if there is no layout file specified.
      setupapi: Add stubs for SetupQueryInfOriginalFileInformationA/W.
      setupapi: Partially implement SetupQueryInfOriginalFileInformationW.
      ole32: CoGetClassObject shouldn't return REGDB_E_KEYMISSING, so convert it to REGDB_E_CLASSNOTREG.
      ole32: Add test for registered class becoming invalid when apartment is destroyed.
      ole32: Revoke registered class objects when the apartment they were registered in is destroyed, not when the last CoUninitialize is called.
      ole32: Add tests for in-process registered class objects not being visible from different apartments.
      ole32: COM_GetRegisteredClassObject should only retrieve objects that were registered in the current apartment.
      ole32: Split CoRevokeClassObject into a separate function, COM_RevokeRegisteredClassObject, which acts on a RegisteredClass object.
      ole32: Fix CoRevokeClassObject to return RPC_E_WRONG_THREAD if it was called from a different apartment than the one that called CoRegisterClassObject.
      ole32: Add documentation about registered class objects only being visible in the apartment in which they were registered.
      ole32: Add documentation for error info functions.
      ole32: Add a test for the retrieved local class object in another thread being a proxy.
      ole32: Don't release the drop target on process uninitialisation if not revoked, just release the memory.
      setupapi: Don't copy an OEM inf file if the exact same OEM inf file already exists.
      setupapi: Improve the stub for SetupQueryInfOriginalFileInformation
      ole32: Move the logic in StgCreateDocfile for "if no share mode given then DENY_NONE is the default" to before the validateSTGM check.
      setupapi: SetupOpenInfFile returns INVALID_HANDLE_VALUE on failure, not NULL.

Rolf Kalbermatter (4):
      advapi32: Store process ID into status structure on startup.
      advapi32: Add prototypes for EnumServicesStatusExA/W.
      advapi32: Implement GetServiceDisplayNameA.
      advapi32: Implement GetServiceDisplayNameW.

Stefan Dösinger (42):
      ddraw: Search for d3d primary a bit differently.
      ddraw: Do not access the surface connection structure directly in SetPalette.
      ddraw: Move the additional surface creation into a seperate function.
      ddraw: Complex surfaces form a tree.
      ddraw: Add a test for surface attachments.
      ddraw: Store a WineD3DBaseTexture instead of a WineD3DTexture.
      d3d: Pass the cube face to Create*Texture's surface creation callback.
      ddraw: Cube texture support.
      ddraw: Cube map structure test.
      ddraw: Update the wined3d depth stencil on device creation, render.
      wined3d: Add missing prototypes for GL_ARB_vertex_blend.
      d3d: Calculate the size of WINED3DFVF_XYZBx FVFs.
      ddraw: Forward all 4 world matrices to wined3d.
      wined3d: Implement vertex blending using GL_ARB_vertex_blend.
      ddraw: Fix reported caps on compressed surfaces.
      wined3d: Full surface DXTn copy.
      ddraw: Adjust the d3d viewport when changing the back buffer.
      ddraw: Primary surfaces always have screen size.
      d3d: Move clippers from DDraw to wined3d.
      wined3d: Make the blit -> flip work for windowed rendering.
      ddraw: Forward the mag filter correctly to wined3d.
      wined3d: Handle DDPCAPS_ALPHA.
      wined3d: Fix front buffer coords for gdi surfaces.
      wined3d: Unset the StreamIsUP flag in ProcessVertices.
      wined3d: Report only D16, D24S8 and D24X8 depth stencil formats as supported.
      wined3d: Implement environment bump mapping with GL_ATI_envmap_bumpmap.
      ddraw: More tests and fixes on surface attachments.
      wined3d: Some more ProcessVertices fixes.
      ddraw: Some caps fixes.
      wined3d: Unload vertex weight data in unloadVertexData.
      wined3d: Support bump environment mapping using GL_NV_texture_shader.
      ddraw: Always set fullscreen mode in wined3d.
      ddraw: Fix stupid bug when setting surface client memory.
      wined3d: Manage private data in a wine linked list.
      ddraw: Remove all non-d3d7 capability flags.
      ddraw: Use point filter for blit operations.
      ddraw: GetSurfaceDesc returns the surface memory while the surface is locked.
      wined3d: Destroying the resource frees all private data.
      wined3d: Implement DDBLT_DEPTHFILL on the active depth stencil target.
      ddraw: Avoid fallout of failing tests.
      wined3d: Only addref clippers if one exists.
      wined3d: Prevent wrong bumpenvmap warnings.

Stefan Leichter (1):
      advapi32: Fix initial cleanup of the registry keys used for testing.

Thomas Spear (2):
      uninstaller: Fix trace message.
      regedit: Spelling and grammar fixes.

Tim Schwartz (1):
      net.exe: Initial stub.

Vitaliy Margolen (2):
      ntdll: Use correct full access bitmask in NtQuerySecurityObject.
      kernel32: Fix off by one error.

Alexandre Julliard
julliard at

More information about the wine-announce mailing list