From 919bd7855fbdc7d51272f3b8f80f376424a39f6b Mon Sep 17 00:00:00 2001 From: Rolf Kalbermatter Date: Fri, 29 Aug 2003 22:10:01 +0000 Subject: [PATCH] Make sure the passed in object pointer is only addrefed on success. --- dlls/ole32/bindctx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/ole32/bindctx.c b/dlls/ole32/bindctx.c index 93bd6614239..7ce20a5c662 100644 --- a/dlls/ole32/bindctx.c +++ b/dlls/ole32/bindctx.c @@ -383,14 +383,13 @@ HRESULT WINAPI BindCtxImpl_RegisterObjectParam(IBindCtx* iface,LPOLESTR pszkey, if (punk==NULL) return E_INVALIDARG; - IUnknown_AddRef(punk); - if (pszkey!=NULL && BindCtxImpl_GetObjectIndex(This,NULL,pszkey,&index)==S_OK) { TRACE("Overwriting existing key\n"); if(This->bindCtxTable[index].pObj!=NULL) IUnknown_Release(This->bindCtxTable[index].pObj); This->bindCtxTable[index].pObj=punk; + IUnknown_AddRef(punk); return S_OK; } This->bindCtxTable[This->bindCtxTableLastIndex].pObj = punk; @@ -425,8 +424,10 @@ HRESULT WINAPI BindCtxImpl_RegisterObjectParam(IBindCtx* iface,LPOLESTR pszkey, if (!This->bindCtxTable) return E_OUTOFMEMORY; } + IUnknown_AddRef(punk); return S_OK; } + /****************************************************************************** * BindCtx_GetObjectParam ******************************************************************************/