Re: [PATCH] [vd_agent] fix bug: display error when dragging file with CJK characters in name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 12, 2014 at 06:52:00PM +0800, Cody Chan wrote:
> ​
> I submitted a patch several months ago about this issue,
> here
> http://lists.freedesktop.org/archives/spice-devel/2014-February/016158.html
> 
> I check it again, and find that the value of
> g_key_file_to_data(keyfile,...) is always utf-8,
> for the value of g_uri_list_extract_uris() is utf8 urlencode.
> 
> So the display problem is caused by vd_agent, but how it displays depends
> on the
> language of system, the following two screenshots show the difference:
> http://int64ago-tmp.qiniudn.com/guest-Chinese.png
> http://int64ago-tmp.qiniudn.com/guest-English.png
> 
> ​
> ---
>  vdagent/file_xfer.cpp | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp
> index e402eb2..96b7394 100644
> --- a/vdagent/file_xfer.cpp
> +++ b/vdagent/file_xfer.cpp
> @@ -46,6 +46,7 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage*
> start,
>      uint64_t file_size;
>      HANDLE handle;
>      AsUser as_user;
> +    int wlen;
> 
>      status->id = start->id;
>      status->result = VD_AGENT_FILE_XFER_STATUS_ERROR;
> @@ -81,7 +82,20 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage*
> start,
> 
>      strcat(file_path, "\\");
>      strcat(file_path, file_name);
> -    handle = CreateFileA(file_path, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0,
> NULL);
> +    if((wlen = MultiByteToWideChar(CP_UTF8, 0, file_path, -1, NULL, 0)) ==
> 0){
> +        vd_printf("failed getting WideChar length of %s", file_path);
> +        return;
> +    }
> +    TCHAR *wfile_path = new TCHAR[wlen];
> +    if (MultiByteToWideChar(CP_UTF8, 0, file_path, -1, wfile_path, wlen)
> == 0){
> +        vd_printf("failed converting file_path:%s to WindChar", file_path);
> +        if (wfile_path)
> +            delete[] wfile_path;

delete[] NULL; is a noop so the explicit check for wfile__path is not
needed. I'll fix this before pushing this patch. ACK :)

Thanks!

Christophe

Attachment: pgpJctZ_bf4Sd.pgp
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]