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:shlf...
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(a)codeweavers.com 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)"