diff --git a/dlls/qcap/enumpins.c b/dlls/qcap/enumpins.c index 6d8323a1794..e77fd6b3766 100644 --- a/dlls/qcap/enumpins.c +++ b/dlls/qcap/enumpins.c @@ -58,6 +58,7 @@ HRESULT IEnumPinsImpl_Construct(const ENUMPINDETAILS * pDetails, IEnumPins ** pp pEnumPins->uIndex = 0; CopyMemory(&pEnumPins->enumPinDetails, pDetails, sizeof(ENUMPINDETAILS)); *ppEnum = (IEnumPins *)(&pEnumPins->lpVtbl); + ObjectRefCount(TRUE); return S_OK; } @@ -103,10 +104,9 @@ static ULONG WINAPI IEnumPinsImpl_Release(IEnumPins * iface) if (!refCount) { CoTaskMemFree(This); - return 0; + ObjectRefCount(FALSE); } - else - return refCount; + return refCount; } static HRESULT WINAPI IEnumPinsImpl_Next(IEnumPins * iface, ULONG cPins, IPin ** ppPins, ULONG * pcFetched) diff --git a/dlls/qcap/qcap_main.c b/dlls/qcap/qcap_main.c index 6fc72500791..b3e4ad946e9 100644 --- a/dlls/qcap/qcap_main.c +++ b/dlls/qcap/qcap_main.c @@ -195,7 +195,7 @@ HRESULT WINAPI QCAP_DllCanUnloadNow(void) { TRACE("\n"); - if (objects_ref == 0 || server_locks == 0) + if (objects_ref == 0 && server_locks == 0) return S_OK; return S_FALSE; }