IsEqualIID(riid, &IID_IAssemblyName))
{
IAssemblyName_AddRef(iface);
- *ppobj = This;
+ *ppobj = &This->IAssemblyName_iface;
return S_OK;
}
LPDWORD pccDisplayName,
DWORD dwDisplayFlags)
{
+ static const WCHAR equals[] = {'=',0};
IAssemblyNameImpl *name = impl_from_IAssemblyName(iface);
- WCHAR verstr[30];
+ WCHAR verstr[30], *cultureval = NULL;
DWORD size;
- LPWSTR cultureval = 0;
-
- static const WCHAR equals[] = {'=',0};
TRACE("(%p, %p, %p, %d)\n", iface, szDisplayName,
pccDisplayName, dwDisplayFlags);
if (!name->displayname || !*name->displayname)
return FUSION_E_INVALID_NAME;
- size = min(*pccDisplayName, lstrlenW(name->displayname) + 1);
+ size = strlenW(name->displayname) + 1;
+
+ if (*pccDisplayName < size)
+ {
+ *pccDisplayName = size;
+ return E_NOT_SUFFICIENT_BUFFER;
+ }
- lstrcpynW(szDisplayName, name->displayname, size);
+ if (szDisplayName) strcpyW(szDisplayName, name->displayname);
*pccDisplayName = size;
return S_OK;
WCHAR *pwzName)
{
IAssemblyNameImpl *name = impl_from_IAssemblyName(iface);
+ DWORD len;
TRACE("(%p, %p, %p)\n", iface, lpcwBuffer, pwzName);
- if (!name->name)
+ if (name->name)
+ len = strlenW(name->name) + 1;
+ else
+ len = 0;
+
+ if (*lpcwBuffer < len)
{
- *pwzName = '\0';
- *lpcwBuffer = 0;
- return S_OK;
+ *lpcwBuffer = len;
+ return E_NOT_SUFFICIENT_BUFFER;
}
+ if (!name->name) lpcwBuffer[0] = 0;
+ else strcpyW(pwzName, name->name);
- lstrcpyW(pwzName, name->name);
- *lpcwBuffer = lstrlenW(pwzName) + 1;
-
+ *lpcwBuffer = len;
return S_OK;
}