Aric Stewart : rpcrt4: Handle NULL pclsid in NdrDllRegisterProxy and NdrDllUnregisterProxy.
Alexandre Julliard
julliard at winehq.org
Thu Apr 8 11:12:41 CDT 2010
Module: wine
Branch: master
Commit: 06085817687ddff4264c9d5853c6f633fda679d2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=06085817687ddff4264c9d5853c6f633fda679d2
Author: Aric Stewart <aric at codeweavers.com>
Date: Wed Apr 7 11:53:05 2010 -0500
rpcrt4: Handle NULL pclsid in NdrDllRegisterProxy and NdrDllUnregisterProxy.
---
dlls/rpcrt4/cpsf.c | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/rpcrt4/cpsf.c b/dlls/rpcrt4/cpsf.c
index ac1eccf..6b12c01 100644
--- a/dlls/rpcrt4/cpsf.c
+++ b/dlls/rpcrt4/cpsf.c
@@ -240,7 +240,12 @@ HRESULT WINAPI NdrDllRegisterProxy(HMODULE hDll,
DWORD len;
TRACE("(%p,%p,%s)\n", hDll, pProxyFileList, debugstr_guid(pclsid));
- format_clsid( clsid, pclsid );
+ if (pclsid)
+ format_clsid( clsid, pclsid );
+ else if ((*pProxyFileList)->TableSize > 0)
+ format_clsid( clsid,(*pProxyFileList)->pStubVtblList[0]->header.piid);
+ else
+ return E_NOINTERFACE;
/* register interfaces to point to clsid */
while (*pProxyFileList) {
@@ -297,8 +302,15 @@ HRESULT WINAPI NdrDllUnregisterProxy(HMODULE hDll,
static const WCHAR clsidW[] = {'C','L','S','I','D','\\',0};
static const WCHAR interfaceW[] = {'I','n','t','e','r','f','a','c','e','\\',0};
WCHAR keyname[50];
+ WCHAR clsid[39];
TRACE("(%p,%p,%s)\n", hDll, pProxyFileList, debugstr_guid(pclsid));
+ if (pclsid)
+ format_clsid( clsid, pclsid );
+ else if ((*pProxyFileList)->TableSize > 0)
+ format_clsid( clsid,(*pProxyFileList)->pStubVtblList[0]->header.piid);
+ else
+ return E_NOINTERFACE;
/* unregister interfaces */
while (*pProxyFileList) {
@@ -318,7 +330,7 @@ HRESULT WINAPI NdrDllUnregisterProxy(HMODULE hDll,
/* unregister clsid */
strcpyW( keyname, clsidW );
- format_clsid( keyname + strlenW(keyname), pclsid );
+ strcatW( keyname, clsid );
RegDeleteTreeW(HKEY_CLASSES_ROOT, keyname);
return S_OK;
More information about the wine-cvs
mailing list