diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 9542d43d5dc..2e1a26d058a 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -8135,9 +8135,7 @@ static ULONG WINAPI HTMLFiltersCollection_Release(IHTMLFiltersCollection *iface)
TRACE("(%p) ref=%ld\n", This, ref);
if(!ref)
- {
- free(This);
- }
+ release_dispex(&This->dispex);
return ref;
}
@@ -8213,6 +8211,17 @@ static const IHTMLFiltersCollectionVtbl HTMLFiltersCollectionVtbl = {
HTMLFiltersCollection_item
};
+static inline HTMLFiltersCollection *HTMLFiltersCollection_from_DispatchEx(DispatchEx *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLFiltersCollection, dispex);
+}
+
+static void HTMLFiltersCollection_destructor(DispatchEx *dispex)
+{
+ HTMLFiltersCollection *This = HTMLFiltersCollection_from_DispatchEx(dispex);
+ free(This);
+}
+
static HRESULT HTMLFiltersCollection_get_dispid(DispatchEx *dispex, BSTR name, DWORD flags, DISPID *dispid)
{
WCHAR *ptr;
@@ -8252,7 +8261,7 @@ static HRESULT HTMLFiltersCollection_invoke(DispatchEx *dispex, DISPID id, LCID
}
static const dispex_static_data_vtbl_t HTMLFiltersCollection_dispex_vtbl = {
- NULL,
+ HTMLFiltersCollection_destructor,
NULL,
NULL,
HTMLFiltersCollection_get_dispid,