Gabriel Ivăncescu : mshtml: Use unlink and destructor in the vtbl for HTMLMimeTypesCollection.
Module: wine Branch: master Commit: 530c68d829df70987972bc7e77da85cfbd9a82c5 URL: https://gitlab.winehq.org/wine/wine/-/commit/530c68d829df70987972bc7e77da85c... Author: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Date: Thu Aug 3 15:56:13 2023 +0300 mshtml: Use unlink and destructor in the vtbl for HTMLMimeTypesCollection. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> --- dlls/mshtml/omnavigator.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 076589a20b4..6f2b2ab8524 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1022,12 +1022,8 @@ static ULONG WINAPI HTMLMimeTypesCollection_Release(IHTMLMimeTypesCollection *if TRACE("(%p) ref=%ld\n", This, ref); - if(!ref) { - if(This->navigator) - This->navigator->mime_types = NULL; + if(!ref) release_dispex(&This->dispex); - free(This); - } return ref; } @@ -1084,13 +1080,38 @@ static const IHTMLMimeTypesCollectionVtbl HTMLMimeTypesCollectionVtbl = { HTMLMimeTypesCollection_get_length }; +static inline HTMLMimeTypesCollection *HTMLMimeTypesCollection_from_DispatchEx(DispatchEx *iface) +{ + return CONTAINING_RECORD(iface, HTMLMimeTypesCollection, dispex); +} + +static void HTMLMimeTypesCollection_unlink(DispatchEx *dispex) +{ + HTMLMimeTypesCollection *This = HTMLMimeTypesCollection_from_DispatchEx(dispex); + if(This->navigator) { + This->navigator->mime_types = NULL; + This->navigator = NULL; + } +} + +static void HTMLMimeTypesCollection_destructor(DispatchEx *dispex) +{ + HTMLMimeTypesCollection *This = HTMLMimeTypesCollection_from_DispatchEx(dispex); + free(This); +} + +static const dispex_static_data_vtbl_t HTMLMimeTypesCollection_dispex_vtbl = { + HTMLMimeTypesCollection_destructor, + HTMLMimeTypesCollection_unlink +}; + static const tid_t HTMLMimeTypesCollection_iface_tids[] = { IHTMLMimeTypesCollection_tid, 0 }; static dispex_static_data_t HTMLMimeTypesCollection_dispex = { L"MimeTypeArray", - NULL, + &HTMLMimeTypesCollection_dispex_vtbl, IHTMLMimeTypesCollection_tid, HTMLMimeTypesCollection_iface_tids };
participants (1)
-
Alexandre Julliard