From 464cdf7f1c0de6b7b607934f6faaee90ed704b93 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sat, 6 Mar 2010 11:14:00 +0000 Subject: [PATCH] [ATL] sync atl to wine 1.1.40 svn path=/trunk/; revision=45915 --- reactos/dll/win32/atl/registrar.c | 35 ++++++++++++++++++------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/reactos/dll/win32/atl/registrar.c b/reactos/dll/win32/atl/registrar.c index b2efda989ad..70c1384ca9b 100644 --- a/reactos/dll/win32/atl/registrar.c +++ b/reactos/dll/win32/atl/registrar.c @@ -758,39 +758,44 @@ static HRESULT do_register_dll_server(IRegistrar *pRegistrar, LPCOLESTR wszDll, LPCOLESTR wszId, BOOL do_register, const struct _ATL_REGMAP_ENTRY* pMapEntries) { - WCHAR buf[MAX_PATH]; + 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}; - static const WCHAR wszCLSID_ATLRegistrar[] = - {'C','L','S','I','D','_','A','T','L','R','e','g','i','s','t','r','a','r',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); - - StringFromGUID2(&CLSID_ATLRegistrar, buf, sizeof(buf)/sizeof(buf[0])); - IRegistrar_AddReplacement(pRegistrar, wszCLSID_ATLRegistrar, buf); + 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; } static HRESULT do_register_server(BOOL do_register) { - static const WCHAR wszDll[] = {'a','t','l','.','d','l','l',0}; - return do_register_dll_server(NULL, wszDll, MAKEINTRESOURCEW(101), do_register, NULL); + static const WCHAR CLSID_ATLRegistrarW[] = + {'C','L','S','I','D','_','A','T','L','R','e','g','i','s','t','r','a','r',0}; + static const WCHAR atl_dllW[] = {'a','t','l','.','d','l','l',0}; + + WCHAR clsid_str[40]; + const struct _ATL_REGMAP_ENTRY reg_map[] = {{CLSID_ATLRegistrarW, clsid_str}, {NULL,NULL}}; + + StringFromGUID2(&CLSID_ATLRegistrar, clsid_str, sizeof(clsid_str)/sizeof(WCHAR)); + return do_register_dll_server(NULL, atl_dllW, MAKEINTRESOURCEW(101), do_register, reg_map); } /***********************************************************************