Frequent and annoying Wine bug
Francois Gouget
fgouget at codeweavers.com
Thu Jul 28 16:37:19 CDT 2005
Hi,
Robbert Xerox wrote:
> Hi , i know this is not a wine-bug channel, but this
> bug is affecting quite some apps, and seems to affect
> more and more ...
> At least five apps from wine-bug mailinglist throw up
> an exception which either reads: "Assertion Failed
> !bogus context in Local_Unwind()" or "in
> Exception_Handler".
I have seen a bug pretty much like this in an application and here's
what Mike Hearn had to say about it:
> There were actually two bugs here:
>
> * Despite what the unit tests indicate, IShellFolder::BindToObject
> with a NULL pidl can sometimes work. I guess it depends on the exact
> class implementation. In this case I fixed it with an application
> specific hack, we just return the desktop folder (it should probably
> return an addreffed This).
>
> * The app apparently relies on an old Win98 specific bug where
> SFGAO_FILESYSTEM is set on My Computer. This bug is documented here:
>
> http://msdn.microsoft.com/msdnmag/issues/05/06/CAtWork/default.aspx
>
> at the bottom. But it's not present in Windows NT, as our unit tests
> actually prove (we should pay more attention to 98/NT differences!!):
>
>
http://test.winehq.com/data/200506231000/98_PaulVriensW98SEFull/shell32:shlfolder.txt
>
> It can be fixed with the patch to wine.inf, if you then do "make
> install" in the tools directory and re-run wineprefixcreate.
I've attached the patch so you can try it. That's not code I can comment
on but maybe Mike will when he's back from his not-quite-vacations.
--
Francois Gouget
fgouget at codeweavers.com
-------------- next part --------------
Index: dlls/shell32/shlfolder.c
===================================================================
RCS file: /var/cvs/wine/dlls/shell32/shlfolder.c,v
retrieving revision 1.104
diff -u -p -r1.104 shlfolder.c
--- dlls/shell32/shlfolder.c 20 Jul 2005 10:29:05 -0000 1.104
+++ dlls/shell32/shlfolder.c 28 Jul 2005 21:33:11 -0000
@@ -272,6 +272,15 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLI
HRESULT hr;
LPITEMIDLIST pidlChild;
+ TRACE("pidlRoot=%p, pathRoot=%s, pidlComplete=%p, riid=%s, ppvOut=%p\n",
+ pidlRoot, pathRoot, pidlComplete, debugstr_guid(riid), ppvOut);
+
+ if (!pidlComplete)
+ {
+ SHELL32_CoCreateInitSF(_ILCreateDesktop(), pathRoot, NULL, &CLSID_ShellDesktop, riid, ppvOut);
+ return S_OK;
+ }
+
if (!pidlRoot || !ppvOut || !pidlComplete || !pidlComplete->mkid.cb)
return E_INVALIDARG;
Index: tools/wine.inf
===================================================================
RCS file: /var/cvs/wine/tools/wine.inf,v
retrieving revision 1.37
diff -u -p -r1.37 wine.inf
--- tools/wine.inf 27 Jul 2005 15:42:40 -0000 1.37
+++ tools/wine.inf 28 Jul 2005 21:30:35 -0000
@@ -100,6 +100,8 @@ HKCR,TypeLib\{00020430-0000-0000-C000-00
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0,,,"OLE Automation"
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\0\win32,,,"stdole2.tlb"
HKCR,TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\FLAGS,,,"0"
+; FIXME: this is to emulate a Windows 98 bug which is gone in NT: very few apps need it
+HKCR,CLSID\{20d04fe0-3aea-1069-a2d8-08002b30309d}\ShellFolder,"Attributes",0x10001,f0000154
[ControlClass]
HKLM,System\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318},,,"Ports (COM & LPT)"
More information about the wine-devel
mailing list