[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