[PATCH 1/4] msi: Handle the remote case directly in MsiGetTargetPathA().

Hans Leidekker hans at codeweavers.com
Thu May 17 03:24:59 CDT 2018


On Wed, 2018-05-16 at 21:14 -0500, Zebediah Figura wrote:
> +UINT WINAPI MsiGetTargetPathA(MSIHANDLE hinst, const char *folder, char *buf, DWORD *sz)
>  {
> -    LPWSTR szwFolder;
> -    awstring path;
> +    MSIPACKAGE *package;
> +    const WCHAR *path;
> +    WCHAR *folderW;
>      UINT r;
>  
> -    TRACE("%s %p %p\n", debugstr_a(szFolder), szPathBuf, pcchPathBuf);
> +    TRACE("%s %p %p\n", debugstr_a(folder), buf, sz);
>  
> -    szwFolder = strdupAtoW(szFolder);
> -    if (szFolder && !szwFolder)
> -        return ERROR_FUNCTION_FAILED; 
> +    if (!folder)
> +        return ERROR_INVALID_PARAMETER;
>  
> -    path.unicode = FALSE;
> -    path.str.a = szPathBuf;
> +    if (!(folderW = strdupAtoW(folder)))
> +        return ERROR_OUTOFMEMORY;
>  
> -    r = MSI_GetTargetPath( hInstall, szwFolder, &path, pcchPathBuf );
> +    package = msihandle2msiinfo(hinst, MSIHANDLETYPE_PACKAGE);
> +    if (!package)
> +    {
> +        WCHAR *path = NULL;
> +        MSIHANDLE remote;
>  
> -    msi_free( szwFolder );
> +        if (!(remote = msi_get_remote(hinst)))
> +            return ERROR_INVALID_HANDLE;

folderW is leaked here. I missed this in the patch for MsiGetPropertyA.




More information about the wine-devel mailing list