[PATCH 09/11] winex11: Directly use ntdll in uri_to_dos.

Huw Davies huw at codeweavers.com
Tue Apr 26 10:11:07 CDT 2022


On Tue, Apr 26, 2022 at 04:17:47PM +0200, Jacek Caban wrote:
> Signed-off-by: Jacek Caban <jacek at codeweavers.com>
> ---
>  dlls/winex11.drv/clipboard.c | 31 +++++++++++++++++++++++++++----
>  1 file changed, 27 insertions(+), 4 deletions(-)
> 

> diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
> index 51da5d6a5e6..87b1ed2b8fb 100644
> --- a/dlls/winex11.drv/clipboard.c
> +++ b/dlls/winex11.drv/clipboard.c
> @@ -569,6 +569,29 @@ static HGLOBAL create_dib_from_bitmap(HBITMAP hBmp)
>  }
>  
>  
> +/* based on wine_get_dos_file_name */
> +static WCHAR *get_dos_file_name( const char *path )
> +{
> +    ULONG len = strlen( path ) + 9; /* \??\unix prefix */
> +    WCHAR *ret;
> +
> +    if (!(ret = malloc( len * sizeof(WCHAR) ))) return NULL;
> +    if (wine_unix_to_nt_file_name( path, ret, &len ))
> +    {
> +        free( ret );
> +        return NULL;
> +    }
> +
> +    if (ret[5] == ':')
> +    {
> +        /* get rid of the \??\ prefix */
> +        memmove( ret, ret + 4, (len - 4) * sizeof(WCHAR) );
> +    }
> +    else ret[1] = '\\';
> +    return ret;
> +}
> +

I noticed that this change didn't result in any change to a freer.  It
turned out there was an issue with the commit yesterday which swapped
two of them.  The result being, that even after this patch,
import_text_uri_list() would try to free "uri" from the process heap.
So, I've sent in v2 of this series which adds a patch up front to
unswap the freers.

Huw.



More information about the wine-devel mailing list