mshtml: Fixed unsafe cast in CreateChromeWindow2 implementation.

This commit is contained in:
Jacek Caban 2010-12-27 22:22:02 +01:00 committed by Alexandre Julliard
parent f52e0a776f
commit a131886a86
3 changed files with 13 additions and 4 deletions

View File

@ -705,6 +705,7 @@ void ConnectionPointContainer_Destroy(ConnectionPointContainer*);
NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*); NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*);
void NSContainer_Release(NSContainer*); void NSContainer_Release(NSContainer*);
nsresult create_chrome_window(nsIWebBrowserChrome*,nsIWebBrowserChrome**);
void init_mutation(HTMLDocumentNode*); void init_mutation(HTMLDocumentNode*);
void release_mutation(HTMLDocumentNode*); void release_mutation(HTMLDocumentNode*);

View File

@ -1150,8 +1150,6 @@ static nsresult NSAPI nsWebBrowserChrome_ExitModalEventLoop(nsIWebBrowserChrome
return NS_ERROR_NOT_IMPLEMENTED; return NS_ERROR_NOT_IMPLEMENTED;
} }
#undef NSWBCHROME_THIS
static const nsIWebBrowserChromeVtbl nsWebBrowserChromeVtbl = { static const nsIWebBrowserChromeVtbl nsWebBrowserChromeVtbl = {
nsWebBrowserChrome_QueryInterface, nsWebBrowserChrome_QueryInterface,
nsWebBrowserChrome_AddRef, nsWebBrowserChrome_AddRef,
@ -1711,6 +1709,17 @@ static const nsISupportsWeakReferenceVtbl nsSupportsWeakReferenceVtbl = {
nsSupportsWeakReference_GetWeakReference nsSupportsWeakReference_GetWeakReference
}; };
nsresult create_chrome_window(nsIWebBrowserChrome *parent, nsIWebBrowserChrome **ret)
{
NSContainer *new_container;
if(parent->lpVtbl != &nsWebBrowserChromeVtbl)
return NS_ERROR_UNEXPECTED;
new_container = NSContainer_Create(NULL, NSWBCHROME_THIS(parent));
*ret = NSWBCHROME(new_container);
return NS_OK;
}
NSContainer *NSContainer_Create(HTMLDocumentObj *doc, NSContainer *parent) NSContainer *NSContainer_Create(HTMLDocumentObj *doc, NSContainer *parent)
{ {

View File

@ -99,8 +99,7 @@ static nsresult NSAPI nsWindowCreator_CreateChromeWindow2(nsIWindowCreator2 *ifa
if(cancel) if(cancel)
*cancel = FALSE; *cancel = FALSE;
*_retval = NSWBCHROME(NSContainer_Create(NULL, (NSContainer*)parent)); return create_chrome_window(parent, _retval);
return NS_OK;
} }
static const nsIWindowCreator2Vtbl nsWindowCreatorVtbl = { static const nsIWindowCreator2Vtbl nsWindowCreatorVtbl = {