On 8/19/21 5:11 AM, Hiroki Awata wrote:
diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c index b3210fdcd59..249867da8c8 100644 --- a/dlls/quartz/filtermapper.c +++ b/dlls/quartz/filtermapper.c @@ -195,6 +195,7 @@ static HRESULT enum_reg_filters_create(REGFILTER *filters, unsigned int count, I object->refcount = 1; object->count = count;
- InterlockedIncrement(&object_locks); TRACE("Created enumerator %p.\n", object); *out = &object->IEnumRegFilters_iface; return S_OK;
@@ -329,6 +330,7 @@ static HRESULT enum_moniker_create(IMoniker **filters, unsigned int count, IEnum object->refcount = 1; object->count = count;
- InterlockedIncrement(&object_locks); TRACE("Created enumerator %p.\n", object); *out = &object->IEnumMoniker_iface; return S_OK;
These two are desirable, but it needs a corresponding decrement in the Release() methods. It should probably also be a separate patch.
diff --git a/dlls/quartz/memallocator.c b/dlls/quartz/memallocator.c index cc13f776cfb..1bc4d1d0041 100644 --- a/dlls/quartz/memallocator.c +++ b/dlls/quartz/memallocator.c @@ -936,5 +936,6 @@ HRESULT mem_allocator_create(IUnknown *lpUnkOuter, IUnknown **out) else CoTaskMemFree(pMemAlloc);
- InterlockedIncrement(&object_locks); return hr; }
This increases object_locks in the failure case.
video_renderer_create() also needs an increment; it seems to have been overlooked by this patch.