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