mshtml: Use unlink and destructor in the vtbl for Navigator.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
This commit is contained in:
Gabriel Ivăncescu 2023-08-03 15:56:13 +03:00 committed by Alexandre Julliard
parent 530c68d829
commit 6306e86bfd

View file

@ -1179,14 +1179,8 @@ static ULONG WINAPI OmNavigator_Release(IOmNavigator *iface)
TRACE("(%p) ref=%ld\n", This, ref); TRACE("(%p) ref=%ld\n", This, ref);
if(!ref) { if(!ref)
if(This->plugins)
This->plugins->navigator = NULL;
if(This->mime_types)
This->mime_types->navigator = NULL;
release_dispex(&This->dispex); release_dispex(&This->dispex);
free(This);
}
return ref; return ref;
} }
@ -1533,13 +1527,42 @@ static const IOmNavigatorVtbl OmNavigatorVtbl = {
OmNavigator_get_userProfile OmNavigator_get_userProfile
}; };
static inline OmNavigator *OmNavigator_from_DispatchEx(DispatchEx *iface)
{
return CONTAINING_RECORD(iface, OmNavigator, dispex);
}
static void OmNavigator_unlink(DispatchEx *dispex)
{
OmNavigator *This = OmNavigator_from_DispatchEx(dispex);
if(This->plugins) {
This->plugins->navigator = NULL;
This->plugins = NULL;
}
if(This->mime_types) {
This->mime_types->navigator = NULL;
This->mime_types = NULL;
}
}
static void OmNavigator_destructor(DispatchEx *dispex)
{
OmNavigator *This = OmNavigator_from_DispatchEx(dispex);
free(This);
}
static const dispex_static_data_vtbl_t OmNavigator_dispex_vtbl = {
OmNavigator_destructor,
OmNavigator_unlink
};
static const tid_t OmNavigator_iface_tids[] = { static const tid_t OmNavigator_iface_tids[] = {
IOmNavigator_tid, IOmNavigator_tid,
0 0
}; };
static dispex_static_data_t OmNavigator_dispex = { static dispex_static_data_t OmNavigator_dispex = {
L"Navigator", L"Navigator",
NULL, &OmNavigator_dispex_vtbl,
DispHTMLNavigator_tid, DispHTMLNavigator_tid,
OmNavigator_iface_tids OmNavigator_iface_tids
}; };