Wine release 0.9.54

Alexandre Julliard julliard at
Fri Jan 25 10:16:45 CST 2008

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

What's new in this release:
  - Photoshop CS/CS2 should now work, please help us testing it.
    See for details.
  - A number of RPC fixes.
  - Various improvements to the debugger support.
  - 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.53:

Alexander Dorofeyev (4):
      wined3d: Change colorkey fixup for stage 0 alphaop / alphaarg.
      ddraw: Fix handling of alpha with D3DTBLEND_MODULATE.
      ddraw/tests: Add test for D3DTBLEND_MODULATE.
      wined3d: Fix not released swapchain in some codepaths.

Alexander Nicolaysen Sørnes (7):
      wordpad: Fix width when text break = margins.
      wordpad: Add basic ruler.
      riched20: Include selection bar size in POSFROMCHAR.
      riched20: Don't clear CFM_UNDERLINE flag when applying styles where it is set.
      uninstaller: Disable Uninstall button when no items selected.
      uninstaller: Fix Norwegian Bokmål resource.
      winecfg: Update Norwegian Bokmål resource.

Alexandre Julliard (55):
      kernel32: Close the stdio handles when creating a detached process.
      kernel32: Don't inherit stdin/stdout handles in wineboot.
      user32: Don't inherit stdin/stdout handles in explorer.
      server: Take into account the extended registers part of the i386 context.
      kernel32/tests: Avoid size_t in traces.
      ntdll: Copy extended registers too in copy_context().
      ntdll: Linux support for saving and restoring the extended FPU context on exceptions.
      ntdll: Mac OS support for saving and restoring the extended FPU context on exceptions.
      ntdll: Restore typecast that is really needed.
      ntdll: Fall back to a server device ioctl for files with no associated fd.
      mountmgr.sys: Fix values returned for IOCTL_STORAGE_GET_DEVICE_NUMBER on emulated disks.
      winebuild: Reserve the space for the PE header in the .init section.
      winmm: Load only one sound driver at a time.
      wineboot: Add a --init option used when launched automatically at startup.
      wineboot: Delay import the dlls that are not needed for the default initialisation.
      winebuild: Don't try to use the .init section on Mac OS.
      kernel32: Fix the system affinity returned by GetProcessAffinityMask.
      server: Don't force the process affinity to 1, leave it up to the client.
      winex11.drv: Don't fetch the atom for a null device type.
      winex11.drv: Don't create a win_data structure for the desktop window, except in the process that owns it.
      winex11.drv: Moved initialization of screen_width/height to xinerama_init to do it inside the x11 lock.
      ntdll: Don't try to restore extended fpu context if not supported.
      widl: Use the real argument names in the C method macros.
      winex11.drv: Set the initial icon hints in set_initial_wm_hints().
      libwine: Properly increment source pointer for surrogates in wine_utf8_wcstombs.
      user32,server: Set the initial window rectangles to 0,0-0,0.
      winex11.drv: Fix handling of strange window sizes in CreateWindow, with tests.
      winex11.drv: Only allocate wm hints if we have an X11 window.
      ntdll: Don't fetch extended FPU context if there's no FPU context at all.
      server: Add a separate request to set the window visible rect.
      server: Invalidate the correct region when custom valid rects are specified.
      winex11: Abstract the server part of SetWindowPos into a separate function.
      winex11: Make the client rect relative to the parent window for consistency with the server side.
      winex11: Properly invalidate moved child windows instead of forcing SWP_NOCOPYBITS.
      winex11: Move the window bits according to the valid rects instead of invalidating.
      winex11: Move resetting of the cursor clip rectangle into xinerama_init().
      winex11: Leave it up to explorer to specify the correct size and position for the desktop.
      winex11: Update the win data rectangles before doing anything else in SetWindowPos.
      winex11: Move code around in X11DRV_SetWindowPos to reduce indentation levels.
      winex11: Add a mapped flag to the window data instead of relying on WS_VISIBLE.
      winex11: Apply the existing window region (if any) when creating the whole window.
      winex11: Set hints for the existing window text when creating the whole window.
      winex11: Set icon hints on non-managed windows too, since they may become managed later on.
      winex11: Get the icon from the window in case it was changed before the whole window was created.
      winex11: Remove obsolete code to set Z-order for child windows.
      winex11: Export a function to dock a window into the system tray, and get rid of the WS_EX_TRAYWINDOW style.
      comctl32: Tooltips should be top-most windows.
      user32: Menus should be top-most windows.
      winex11: Don't create a win_data structure for the root window in non-desktop mode.
      winex11: Create the window data structure lazily, once the window is made visible.
      winex11: Check for need to make window managed when WS_VISIBLE is set outside of SetWindowPos.
      winex11: Catch DIB memory accesses that touch the last page beyond the DIB bits end.
      user32: Moved the bulk of CreateWindow and SetWindowPos from the driver back into user32.
      Avoid sizeof in traces.
      winex11: Check for managed mode in create_whole_window again now that it is called lazily.

Alistair Leslie-Hughes (15):
      msxml3: Implement get_dataType.
      msxml3: Correct get_attributes for CDATA Section.
      msxml3: Implemented IXMLDOMCDATASection COM Object.
      msxml3: Implement GetClassID for XMLDocument IPersistStream interface.
      msxml3: Corrected getAttribute to return current value and assign output var.
      mscoree: Fix memory leak.
      msxml3: Implement put_text.
      msxml3: Implement get_nodeTypeString.
      msxml3: Attribute nodes are not typed.
      msxml3: Implement IXMLDOMImplementation Interface.
      msxml3: Implement IXMLDOMDocumentFragment Interface.
      msxml3: Entity Reference nodes do not support attributes property.
      msxml3: Implement IXMLDOMEntityReference interface.
      msxml3: Return correct IDispatch Interface.
      gmsxml3: Added typelib support.

Allan Tong (1):
      wined3d: Set swapchain container before flagging front buffer with SFLAG_INDRAWABLE.

Andrej Sinicyn (1):
      wordpad: Update German strings and correct shortcuts to match XP wordpad.

Andrew Talbot (30):
      netapi32: Remove unneeded cast.
      msvcrt: Remove unneeded casts.
      ntdll: Remove unneeded casts.
      msxml3: Remove unneeded cast.
      msvfw32: Remove unneeded casts.
      setupapi: Fix dead code (Coverity).
      ole32: Remove unneeded casts.
      oleaut32: Remove unneeded casts.
      qcap: Remove unneeded casts.
      psapi: Remove unneeded cast.
      rpcrt4: Remove unneeded casts.
      quartz: Remove unneeded casts.
      riched20: Remove unneeded casts.
      rsaenh: Remove unneeded casts.
      sane.ds: Remove unneeded casts.
      secur32: Remove unneeded casts.
      setupapi: Remove unneeded casts.
      shell32: Remove unneeded casts.
      shell32: Remove unneeded casts.
      shell32: Remove unneeded casts.
      urlmon: Remove unneeded cast.
      user32: Remove unneeded casts.
      user32: Remove unneeded casts.
      uxtheme: Remove unneeded casts.
      vmm.vxd: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      wined3d: Remove unneeded casts.
      winedos: Remove unneeded casts.

Andrey Esin (9):
      wineboot: Russian translation.
      shell32: Update Russian translation.
      wordpad: Adding to Russian translation.
      wordpad: Corrections in Russian translation.
      regedit: Update Russian translation.
      write: Russian translation.
      browseui: Russian translation.
      wininet: One addition to Russian translation.
      credui: Added Russian translation.

Aric Stewart (1):
      wineps.drv: Properly handle NULL LPLOGFONT in PSDRV_EnumDeviceFonts.

Austin English (4):
      Misc spelling fixes.
      tools: Spelling fixes.
      wined3d: Spelling fixes.
      comctl32: Spelling fixes.

Christoph von Wittich (1):
      msi: Fix process token leak.

Christopher Berner (1):
      user32: Fixed off by one scroll bar pixels.

Dan Hipschman (1):
      oleaut32: Use the symbolic name for TYPEFLAG_FDISPATCHABLE.

Dan Kegel (5):
      gdiplus/tests: Don't free if alloc failed.
      hlink/tests: Skip tests if hlink couldn't be created.
      urlmon: Fix unlikely free of uninitialized pointer.
      winealsa.drv: Don't return garbage if can't find active channel.
      gdi32: Fix AddFontResource behavior with relative paths.

Dmitry Timoshkov (11):
      gdi32: Use public FS_xxxxxx defines.
      gdi32: Initialize more fields in GetEnumStructs.
      gdi32: Add a test for undocumented EnumFontFamiliesEx(NULL), make it pass under Wine.
      gdi32: Do not allow to create too large device dependent bitmaps like Windows does.
      gdi32: Allocate cache for face enumeration data only when necessary.
      ntdll: Do not perform base relocation if an image is not a DLL.
      gdi32: Actually perform the fractional scaling test, make it pass under Wine.
      winebuild: Add a couple of missing indentations in the generated asm files.
      user32: Make MapVirtualKeyEx(MAPVK_VK_TO_CHAR) behave more like in Windows.
      shell32: Add a LogoffWindowsDialog stub.
      winex11.drv: Remove an incorrect FIXME.

Eric Pouech (17):
      dbghelp: Silence superfluous message (spotted by Robert Reif).
      dbghelp: In Minidump, change a couple of internal names for consistency.
      winedbg: Fixed bt all so that current process/thread isn't lost.
      winedbg: Workaround broken minidumps with invalid 32->64 address conversion.
      winedbg: Added a way to support differently selector information depending on current target.
      ole32: Fixed datacache object so that we can retrieve meaningful information.
      msvcrt: symbol undecoration: Now correctly parsing the template forms.
      msvcrt: symbol undecoration: Handling of void in template parameters' list.
      msvcrt: symbol undecoration: Added support for cointerface.
      msvcrt: symbol undecoration: Added support for a couple of more calling conventions.
      msvcrt: symbol undecoration: Corrected handling of non static member function modifiers.
      msvcrt: symbol undecoration: Added support for thunks.
      msvcrt: symbol undecoration: Added support for RTTI types.
      msvcrt: symbol undecoration: Really check that we get a template string before making use of it.
      ntdll: Fixed getting the RTS status from line, and now using sane default values for all (compilation/system) cases.
      msvcrt: Corrected the .spec definition for the printf functions family.
      regedit: Warn about newest unicode export from native regedit.

Eric van Beurden (6):
      dbghelp: Update some mscvpdb.h definitions and descriptions.
      dbghelp: Return TRUE in SymInitializeW if process is already initialized and add an ERR to SymCleanup.
      dbghelp: Wrap TRACE strings using the debugstr functions and update some type casting.
      dbghelp: Some minidump corrections so that windbg can read our minidump files.
      dbghelp: Fix file searching to search only listed directories instead of the whole HD.
      dbghelp: Prevent huge minidumps by ensuring the memory range is clamped.

Francois Gouget (11):
      gdi32: Small wording tweaks in comments.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      Fix spelling error in the generated conformance test files.
      include: Document some Microsoft spelling mistakes so we know they are not to be fixed.
      kernel32/tests: Small spelling fix in a parameter name.
      Assorted spelling fixes.
      advapi32/tests: Actually test strings that expand to something bigger than their original size.
      advapi32/tests: Add the trailing '\n' to an ok() call.
      kernel32/tests: Test the expansion of indirect environment variable references.
      winemenubuilder: Expand environment variable references in the shortcut's WorkDir, Description and IconPath fields.
      Assorted spelling fixes.

Gerald Pfeifer (3):
      wininet: Fix type of a loop variable in HTTP_BuildHeaderRequestStr().
      kernel32: Fix type of a loop variable in SNOOP16_Entry().
      kernel32: Use setproctitle where applicable to set the process name.

Gregor Münch (1):
      msxml3: Fix typo.

Hans Leidekker (9):
      license: Update copyright info for the new year.
      msvcrt: Fix _execv spec entries for the forwarding variants too.
      msvcrt: _ftol returns a 64-bit value.
      msvcr71: Add an implementation that forwards to msvcrt.
      gdi32: Last parameter of GetICMProfile is an output parameter.
      gdi32: Make GetICMProfile behave more like native. Rewrite ansi version as a wrapper and move color management functions to their own file.
      gdi32: Add tests for GetICMProfile and SetICMMode.
      mscms: Use NT directory for storing color profiles.
      mscms: Open .icm files only when enumerating color profiles.

Jacek Caban (9):
      shdocvw: Added DWebBrowserEvents2 test.
      shdocvw: Call OnFullScreen in put_FullScreen.
      shdocvw: Call WindowSetResizable in put_Resizable.
      shdocvw: Call StatusTextChange in set_status_text.
      shdocvw: Store URL in BindStatusCallback.
      shdocvw: Use more flexible mechanism instead of WB_WM_NAVIGATE2.
      shdocvw: Delay creating URL moniker to bind_to_object call.
      shdocvw: Do navigation in message handler.
      shdocvw: Store headers as BSTR.

James Hawkins (3):
      msi: dest_path refers to the directory prefix, not the entire file path.
      propsys: Add a stub implementation of propsys.dll.
      msi: Add more MsiFormatRecord tests.

Jason Green (1):
      d3d9 tests: Correct some typos.

Jonathan Ernst (1):
      loader: Updated French man page.

Juan Lang (4):
      wintrust: Don't expect ImageGetCertificateData to succeed when Certificate is NULL.
      crypt32: Don't release default crypto provider on process shutdown.
      crypt32: Fix race condition in loading default provider.
      hhctrl.ocx: Don't return uninitialized stream.

Kai Blin (1):
      gdi32: Fix spec file to export the right symbols for GetGlyphOutline.

Ken Thomases (1):
      winex11.drv: Accomodate XGetWindowProperty returning an actual format of something other than 32 for the TARGETS property.

Lei Zhang (1):
      ddraw: Register the DirectDraw 7 Object.

Marcus Meissner (13):
      server: Enumerate process in reverse.
      mshtml: Check for This->frame.
      wined3d: Check for overflows.
      urlmon: Skip pstgmed related tests if NULL.
      wmi: Initial version of wmi.dll.
      gdi32: Fix possible NULL ptr in TRACE.
      msi: Replaced msi_free() by LocalAlloc() since ConvertSidToStringSidW uses LocalAlloc().
      wined3d: Removed deadcode.
      cmd: Include <time.h> for time().
      wined3d: Initialize swapchain.
      rpcrt4: Initialize CurrentHeader.
      d3d9/tests: Initialize decl.
      wininet: Check if buffer has overflowed potentially.

Michael Stefaniuc (3):
      winedump: Do not create a header file when not generating skeleton code.
      winedump: Use the DEFINE_THISCALL_WRAPPER macro instead of the GET_THIS macro for functions with __thiscall calling convention.
      winedump: Use a switch in the generated DllMain().

Pablo Spallanzani (1):
      wined3d: Fix texture coordinate calculation in surface_blt_to_drawable.

Paul Chitescu (1):
      mscoree: Semi-stub for LoadStringRCEx and LoadStringRC.

Paul Vriens (6):
      kernel32/tests: FindFirstVolumeA is not available on win98.
      advapi32/tests: Make tests run on win9x/NT4 again.
      user32/tests: Run full test again on win95 and NT4.
      msi/tests: Only use functions if they are implemented.
      msi/tests: Only use functions if they are implemented.
      kernel32/tests: Win9x returns a different last error.

Reece H. Dunn (5):
      user32: Make the clipboard tests pass on Vista.
      user32: Make the class tests pass on Vista.
      user32: Make the edit tests pass on Vista.
      gdi32: Vista returns UNICODE_NOCHAR if a character does not exist.
      advapi32: Fix some cred test failures on Vista and prevent it crashing.

Rob Shearman (41):
      include: Flesh out winhttp.h with more function declarations, typedefs and defines.
      rpcrt4: Allocate a context handle if a NULL GUID is being unmarshalled.
      rpcrt4: Add support for calculating the memory size of complex types with embedded non-conformant strings.
      rpcrt4: Don't print fixmes for NDR types without a freeing function.
      rpcrt4: Add traces to the start of TowerConstruct and TowerExplode.
      winhttp: Add a stub for WinHttpOpen.
      rpcrt4: Fix the calculation of element sizes for complex arrays by using a new function ComplexStructSize that doesn't touch the buffer to calculate the size.
      rpcrt4: Handle complex arrays in calc_arg_size.
      rpcrt4: The initialisation of [out] variables in the stubless code must be after the unmarshaling of [in] and [in, out] variables has been completed.
      mlang: Implement Rfc1766ToLcidW.
      rpcrt4: Allow NULL networkaddr and endpoint in rpcrt4_np_get_top_of_tower.
      ole32: Partially implement ServerRpcChannelBuffer_GetDestCtx.
      rpcrt4: Move the setting of retval_ptr outside of any particular stub phase in stub_do_args and stub_do_old_args.
      rpcrt4: Add tests for RPC_FC_P_DEREF|RPC_FC_P_ONSTACK pointers.
      comctl32: Keep on displaying the last frame of the animation after the animation has stopped.
      comctl32: Support seeking to a particular frame.
      rpcrt4: Add an exception handler for stubless object proxies.
      rpcrt4: Only initialise the context handle to NULL in NdrContextHandleUnmarshall if it is an out-only or return one.
      iphlpapi: Implement GetBestInterfaceEx.
      kernel32: Initialise the top 16-bit stack frame to zero.
      widl: Write out code for initialising out-only client context handles.
      riched20: The wParam parameter to WM_GETTEXT contains the number of characters, not the number of bytes.
      riched20: Always treat the nCount variable in the EM_GETTEXTEX handler as a character count.
      rpcrt4: Implement asynchronous RPC support.
      rpcrt4: Move the receiving of an individual fragment to a separate function.
      rpcrt4: Remove some unimplemented win9x-only spec entries.
      rpcrt4: Don't set BufferStart and BufferEnd in NdrStubCall2.
      ole32: Don't get the HRESULT from the buffer if we get an RPC_S_CALL_FAILED status back from the runtime.
      advapi32: Add more tests for SetEntriesInAcl.
      ntdll: Fix the index check in RtlGetAce.
      advapi32: Implement SetEntriesInAclW.
      advapi32: Add a test for LookupAccountNameA on a well-known group.
      advapi32: Implement LookupAccountNameW for well-known groups.
      rpcrt4: Fix the error handling in RpcBindingSetAuthInfoA/W when RpcAuthInfo_Create fails.
      rpcrt4: Pass the SPN input to RpcBindingSetAuthInfoA/W into InitializeSecurityContextW instead of AcquireCredentialsHandleA/W.
      rpcrt4: Check the return value of RPCRT4_ClientAuthorize in RPCRT4_Send.
      credui: The list should be the first parameter to the list_add_tail function.
      credui: Return the state of the dialog's save checkbox to CredUIPromptForCredentials.
      ntdsapi: Add tests for DsMakeSpnW.
      ntdsapi: Implement DsMakeSpnW.
      wininet: Pass the server name into InitializeSecurityContextW.

Roderick Colenbrander (2):
      wined3d: Fix glBlendColorEXT for use on RivaTNT.
      wined3d: Don't use texture_rectangle for paletted textures.

Roy Shea (1):
      qmgr: Implement IClassFactory methods.

Sin-ta Hsiea (2):
      gdi32: Fix Traditional Chinese font mapping to "PMingLiU", "MingLiU".
      winecfg: Add Traditional Chinese translation.

Stefan Dösinger (15):
      wined3d: Add a new IWineD3DResource::UnLoad method.
      wined3d: Implement IWineD3DSurface::UnLoad.
      wined3d: Implement IWineD3DVertexBuffer::UnLoad.
      wined3d: Implement IWineD3DIndexBuffer::UnLoad.
      wined3d: Implement IWineD3DVolume::UnLoad.
      wined3d: Implement IWineD3DTexture::UnLoad.
      wined3d: Implement IWineD3DCubeTexture::UnLoad.
      wined3d: Implement VolumeTexture::UnLoad.
      d3d9: Reject IDirect3DDevice9::Reset with active default pool resources.
      wined3d: Unload all resources on Reset.
      wined3d: Keep track of shaders.
      wined3d: Reset the shader state on shader_*_destroy.
      wined3d: Destroy arb shaders on shader destroy.
      wined3d: Destroy opengl shaders on reset.
      wined3d: Clear the constant list before finding constants.

Stefan Leichter (1):
      advapi32: Added some tests for QueryServiceConfig2A/W.

Tony Wasserka (1):
      d3dx9: Start implementation of d3dx9_36.

Alexandre Julliard
julliard at

More information about the wine-announce mailing list