Jacek Caban : atl: Properly release registrar in do_register_dll_server.
Alexandre Julliard
julliard at winehq.org
Thu Feb 25 11:36:21 CST 2010
Module: wine
Branch: master
Commit: f6b43416385a66b9603aa246487710d28badb6b5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f6b43416385a66b9603aa246487710d28badb6b5
Author: Jacek Caban <jacek at 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;
}
More information about the wine-cvs
mailing list