https://bugs.winehq.org/show_bug.cgi?id=40446
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |damjan.jov@gmail.com
--- Comment #9 from Damjan Jovanovic damjan.jov@gmail.com --- We can't directly use the WinSCP source code (https://github.com/winscp/winscp/blob/master/source/forms/About.cpp) to figure out what its “About” box does to our web browser component, as it: #include <WebBrowserEx.hpp> which I can't find anywhere; presumably it's some kind of compiler vendor extension, as it uses Embarcadero C++ Builder XE6 Professional to build.
However comparing the contents of that file against our WINEDEBUG='+resource' run, we can roughly figure out where it's failing. Output, with irrelevant lines removed:
---snip--- 0151:trace:resource:LoadStringW L"Filemanager Toolset library Version 2.6" loaded ! 0151:trace:resource:LoadStringW L"https://jcl.delphi-jedi.org/" loaded ! 0151:trace:resource:LoadStringW L"JEDI Code Library (JCL) %s" loaded ! 0151:trace:resource:LoadStringW L"https://bitbucket.org/uweraabe/pngcomponents" loaded ! 0151:trace:resource:LoadStringW L"Copyright \00a9 Uwe Raabe and Martijn Saly" loaded ! 0151:trace:resource:LoadStringW L"PngComponents 1.4.1" loaded ! ---snip---
which is exactly what happens in method TAboutDialog::DoLoadThirdParty():
---snip--- AddPara(ThirdParty, LoadStr(ABOUT_FILEMANAGER) + Br + LoadStr(ABOUT_FILEMANAGER_COPYRIGHT));
#endif
UnicodeString JclVersion = FormatVersion(JclVersionMajor, JclVersionMinor, JclVersionRelease); AddPara(ThirdParty, FMTLOAD(ABOUT_JCL, (JclVersion)) + Br + CreateLink(LoadStr(ABOUT_JCL_URL)));
AddPara(ThirdParty, LoadStr(ABOUT_PNG) + Br + LoadStr(ABOUT_PNG_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_PNG_URL))); ---snip---
which means the failure probably happens somewhere here: ---snip--- 300 ThirdParty = GenerateAppHtmlPage(DefaultFont.get(), ThirdPartyPanel, ThirdParty, false); 301 302 LoadBrowserDocument(FThirdPartyWebBrowser, ThirdParty); 303 } ---snip---
Those functions appear to come from that WebBrowserEx.hpp header file mentioned earlier, which can't be found anywhere.
What else can we discover from Wine's debug log?
---snip--- 0151:fixme:mshtml:HTMLDocument_put_designMode Unsupported arg L"Off" 0151:fixme:ieframe:ClientSite_GetContainer (0332F460)->(0031EBD4) 0151:err:mshtml:create_document_node SetDesignMode failed: 80070057 ---snip---
Hacking HTMLDocument_put_designMode() to return S_OK instead of the current E_NOTIMPL changes nothing. The last line with create_document_node(), is irrelevant as that result, 80070057 (a Gecko failure), is ignored.
That leaves ieframe:ClientSite_GetContainer() which returns E_NOTIMPL. Hacking it to return E_NOINTERFACE and set *ppContainer=NULL doesn't change anything. Returning S_OK and setting *ppContainer=NULL causes WinSCP to crash. Maybe it requires that function to succeed and return a valid IOleContainter.