[3/7] msi: Don't create a temporary copy of the package. (try 2)
Joris Huizer
joris_huizer at yahoo.com
Tue Aug 23 07:13:10 CDT 2011
Just an implementation detail I noticed:
On 08/23/2011 11:45 AM, Hans Leidekker wrote:
> +
> +static UINT get_registered_local_package( const WCHAR *product, const WCHAR *package, WCHAR *localfile )
> +{
> + MSIINSTALLCONTEXT context;
> + HKEY product_key, props_key;
> + WCHAR *registered_package = NULL, unsquashed[GUID_SIZE];
> + UINT r = ERROR_FUNCTION_FAILED;
> +
> + r = msi_locate_product( product,&context );
> + if (r != ERROR_SUCCESS)
> + return r;
> +
> + r = MSIREG_OpenProductKey( product, NULL, context,&product_key, FALSE );
> + if (r != ERROR_SUCCESS)
> + return r;
> +
> + r = MSIREG_OpenInstallProps( product, context, NULL,&props_key, FALSE );
> + if (r != ERROR_SUCCESS)
> + {
> + RegCloseKey( product_key );
> + return r;
> + }
> + registered_package = msi_reg_get_val_str( product_key, INSTALLPROPERTY_PACKAGECODEW );
> + if (!registered_package)
> + goto done;
> +
> + unsquash_guid( registered_package, unsquashed );
> + if (!strcmpiW( package, unsquashed ))
> + {
> + WCHAR *filename = msi_reg_get_val_str( props_key, INSTALLPROPERTY_LOCALPACKAGEW );
> + strcpyW( localfile, filename );
> + msi_free( filename );
> + r = ERROR_SUCCESS;
> + }
> +done:
> + msi_free( registered_package );
> + RegCloseKey( props_key );
> + RegCloseKey( product_key );
> + return r;
> +}
> +
>
I'm confused about the last part of the function.
I think if the comparison between 'package' and 'unsquashed' fails, you
want to return an error,
but the return value 'r' will be ERROR_SUCCESS at that point, and isn't
updated.
HTH,
Joris
More information about the wine-patches
mailing list