Module: wine Branch: master Commit: f6b43416385a66b9603aa246487710d28badb6b5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f6b43416385a66b9603aa24648...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Feb 24 21:57:48 2010 +0100
atl: Properly release registrar in do_register_dll_server.
---
dlls/atl/registrar.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/atl/registrar.c b/dlls/atl/registrar.c index 691b005..70c1384 100644 --- a/dlls/atl/registrar.c +++ b/dlls/atl/registrar.c @@ -758,26 +758,30 @@ static HRESULT do_register_dll_server(IRegistrar *pRegistrar, LPCOLESTR wszDll, LPCOLESTR wszId, BOOL do_register, const struct _ATL_REGMAP_ENTRY* pMapEntries) { + IRegistrar *registrar; HRESULT hres; const struct _ATL_REGMAP_ENTRY *pMapEntry;
static const WCHAR wszModule[] = {'M','O','D','U','L','E',0}; static const WCHAR wszRegistry[] = {'R','E','G','I','S','T','R','Y',0};
- if (!pRegistrar) - Registrar_create(NULL, &IID_IRegistrar, (void**)&pRegistrar); + if (pRegistrar) + registrar = pRegistrar; + else + Registrar_create(NULL, &IID_IRegistrar, (void**)®istrar);
- IRegistrar_AddReplacement(pRegistrar, wszModule, wszDll); + IRegistrar_AddReplacement(registrar, wszModule, wszDll);
for (pMapEntry = pMapEntries; pMapEntry && pMapEntry->szKey; pMapEntry++) - IRegistrar_AddReplacement(pRegistrar, pMapEntry->szKey, pMapEntry->szData); + IRegistrar_AddReplacement(registrar, pMapEntry->szKey, pMapEntry->szData);
if(do_register) - hres = IRegistrar_ResourceRegisterSz(pRegistrar, wszDll, wszId, wszRegistry); + hres = IRegistrar_ResourceRegisterSz(registrar, wszDll, wszId, wszRegistry); else - hres = IRegistrar_ResourceUnregisterSz(pRegistrar, wszDll, wszId, wszRegistry); + hres = IRegistrar_ResourceUnregisterSz(registrar, wszDll, wszId, wszRegistry);
- IRegistrar_Release(pRegistrar); + if(registrar != pRegistrar) + IRegistrar_Release(registrar); return hres; }