msi: pcchValue represents the length of szValue in TCHARS, not bytes.
This commit is contained in:
parent
4d668e06a2
commit
0cd708e7f5
|
@ -184,6 +184,7 @@ UINT WINAPI MsiSourceListGetInfoA( LPCSTR szProduct, LPCSTR szUserSid,
|
||||||
if (!value)
|
if (!value)
|
||||||
return ERROR_OUTOFMEMORY;
|
return ERROR_OUTOFMEMORY;
|
||||||
|
|
||||||
|
*value = '\0';
|
||||||
ret = MsiSourceListGetInfoW(product, usersid, dwContext, dwOptions,
|
ret = MsiSourceListGetInfoW(product, usersid, dwContext, dwOptions,
|
||||||
property, value, &len);
|
property, value, &len);
|
||||||
if (ret != ERROR_SUCCESS)
|
if (ret != ERROR_SUCCESS)
|
||||||
|
@ -341,10 +342,21 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
|
||||||
}
|
}
|
||||||
else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEW, szProperty)==0)
|
else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEW, szProperty)==0)
|
||||||
{
|
{
|
||||||
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0, 0,
|
*pcchValue = *pcchValue * sizeof(WCHAR);
|
||||||
(LPBYTE)szValue, pcchValue);
|
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0, 0,
|
||||||
|
(LPBYTE)szValue, pcchValue);
|
||||||
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
|
if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
|
||||||
|
{
|
||||||
|
*pcchValue = 0;
|
||||||
rc = ERROR_SUCCESS;
|
rc = ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (*pcchValue)
|
||||||
|
*pcchValue = (*pcchValue - 1) / sizeof(WCHAR);
|
||||||
|
if (szValue)
|
||||||
|
szValue[*pcchValue] = '\0';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -209,10 +209,7 @@ static void test_MsiSourceListGetInfo(void)
|
||||||
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
|
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
|
||||||
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, &size);
|
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, &size);
|
||||||
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
|
||||||
todo_wine
|
ok(size == 0, "Expected 0, got %d\n", size);
|
||||||
{
|
|
||||||
ok(size == 0, "Expected 0, got %d\n", size);
|
|
||||||
}
|
|
||||||
|
|
||||||
data = "msitest.msi";
|
data = "msitest.msi";
|
||||||
res = RegSetValueExA(hkey, "PackageName", 0, REG_SZ, (const BYTE *)data, lstrlenA(data) + 1);
|
res = RegSetValueExA(hkey, "PackageName", 0, REG_SZ, (const BYTE *)data, lstrlenA(data) + 1);
|
||||||
|
|
Loading…
Reference in New Issue