tests/msi.c fails when run twice on Wine?
Paul Vriens
paul.vriens.wine at gmail.com
Mon Jul 30 04:04:22 CDT 2007
James Hawkins wrote:
> On 7/27/07, Paul Vriens <paul.vriens.wine at gmail.com> wrote:
>> Hi,
>>
>> The msi test currently fails for me on Wine when run the second time after
>> getting a clean environment:
>>
>> rm -rf ~/.wine
>> make msi.ok
>> msi: 101 tests executed (0 marked as todo, 0 failures), 0 skipped.
>> rm msi.ok
>> make msi.ok
>> msi.c:366: Test failed: Expected INSTALLSTATE_UNKNOWN, got 1
>> msi: 101 tests executed (0 marked as todo, 1 failure), 0 skipped.
>>
>> Anyone?
>>
>
> Works fine for me.
>
Hi James,
Would the attached patch be OK? It makes sure that squash_guid always sets the
out parameter and check the results of squash_guid in the callers (from registry.c).
This fixes the msi test for me.
I'm not sure about the returned error code ERROR_FILE_NOT_FOUND but it made
the most sense to me.
Cheers,
Paul.
-------------- next part --------------
diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c
index b9c0af4..bda4e28 100644
--- a/dlls/msi/registry.c
+++ b/dlls/msi/registry.c
@@ -233,6 +233,8 @@ BOOL squash_guid(LPCWSTR in, LPWSTR out)
DWORD i,n=1;
GUID guid;
+ out[0] = 0;
+
if (FAILED(CLSIDFromString((LPOLESTR)in, &guid)))
return FALSE;
@@ -474,7 +476,8 @@ UINT MSIREG_OpenUserProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szProduct));
- squash_guid(szProduct,squished_pc);
+ if (!squash_guid(szProduct,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szUserProduct_fmt,squished_pc);
@@ -493,7 +496,8 @@ UINT MSIREG_DeleteUserProductKey(LPCWSTR szProduct)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szProduct));
- squash_guid(szProduct,squished_pc);
+ if (!squash_guid(szProduct,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szUserProduct_fmt,squished_pc);
@@ -508,7 +512,8 @@ UINT MSIREG_OpenUserPatchesKey(LPCWSTR szPatch, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szPatch));
- squash_guid(szPatch,squished_pc);
+ if (!squash_guid(szPatch,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szUserPatch_fmt,squished_pc);
@@ -528,7 +533,8 @@ UINT MSIREG_OpenUserFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szProduct));
- squash_guid(szProduct,squished_pc);
+ if (!squash_guid(szProduct,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szUserFeatures_fmt,squished_pc);
@@ -553,7 +559,8 @@ UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szProduct));
- squash_guid(szProduct,squished_pc);
+ if (!squash_guid(szProduct,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szInstaller_Features_fmt,squished_pc);
@@ -574,7 +581,8 @@ UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
LPWSTR usersid;
TRACE("%s\n", debugstr_w(szProduct));
- squash_guid(szProduct, squished_pc);
+ if (!squash_guid(szProduct, squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
rc = get_user_sid(&usersid);
@@ -607,7 +615,8 @@ UINT MSIREG_OpenComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szComponent));
- squash_guid(szComponent,squished_cc);
+ if (!squash_guid(szComponent,squished_cc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_cc));
sprintfW(keypath,szInstaller_Components_fmt,squished_cc);
@@ -627,7 +636,8 @@ UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szComponent));
- squash_guid(szComponent,squished_cc);
+ if (!squash_guid(szComponent,squished_cc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_cc));
sprintfW(keypath,szUser_Components_fmt,squished_cc);
@@ -648,7 +658,8 @@ UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, HKEY *key, BOOL create
LPWSTR usersid;
TRACE("%s\n", debugstr_w(szComponent));
- squash_guid(szComponent, comp);
+ if (!squash_guid(szComponent, comp))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(comp));
rc = get_user_sid(&usersid);
@@ -677,7 +688,8 @@ UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, HKEY *key, BOOL create)
LPWSTR usersid;
TRACE("%s\n", debugstr_w(szProduct));
- squash_guid(szProduct, squished_pc);
+ if (!squash_guid(szProduct, squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
rc = get_user_sid(&usersid);
@@ -706,7 +718,8 @@ UINT MSIREG_OpenInstallPropertiesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
LPWSTR usersid;
TRACE("%s\n", debugstr_w(szProduct));
- squash_guid(szProduct, squished_pc);
+ if (!squash_guid(szProduct, squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
rc = get_user_sid(&usersid);
@@ -735,7 +748,8 @@ UINT MSIREG_DeleteUserDataProductKey(LPCWSTR szProduct)
LPWSTR usersid;
TRACE("%s\n", debugstr_w(szProduct));
- squash_guid(szProduct, squished_pc);
+ if (!squash_guid(szProduct, squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
rc = get_user_sid(&usersid);
@@ -763,7 +777,8 @@ UINT MSIREG_OpenProductsKey(LPCWSTR szProduct, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szProduct));
- squash_guid(szProduct,squished_pc);
+ if (!squash_guid(szProduct,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szInstaller_Products_fmt,squished_pc);
@@ -782,7 +797,8 @@ UINT MSIREG_DeleteProductKey(LPCWSTR szProduct)
WCHAR keypath[0x200];
TRACE("%s\n", debugstr_w(szProduct));
- squash_guid(szProduct, squished_pc);
+ if (!squash_guid(szProduct, squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath, szInstaller_Products_fmt, squished_pc);
@@ -797,7 +813,8 @@ UINT MSIREG_OpenPatchesKey(LPCWSTR szPatch, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szPatch));
- squash_guid(szPatch,squished_pc);
+ if (!squash_guid(szPatch,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szInstaller_Patches_fmt,squished_pc);
@@ -817,7 +834,8 @@ UINT MSIREG_OpenUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY* key, BOOL create)
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szUpgradeCode));
- squash_guid(szUpgradeCode,squished_pc);
+ if (!squash_guid(szUpgradeCode,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szInstaller_UpgradeCodes_fmt,squished_pc);
@@ -837,7 +855,8 @@ UINT MSIREG_OpenUserUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY* key, BOOL creat
WCHAR keypath[0x200];
TRACE("%s\n",debugstr_w(szUpgradeCode));
- squash_guid(szUpgradeCode,squished_pc);
+ if (!squash_guid(szUpgradeCode,squished_pc))
+ return ERROR_FILE_NOT_FOUND;
TRACE("squished (%s)\n", debugstr_w(squished_pc));
sprintfW(keypath,szInstaller_UserUpgradeCodes_fmt,squished_pc);
More information about the wine-devel
mailing list