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

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

 



Hey,

On Fri, Aug 08, 2014 at 02:22:30AM +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 | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp
> index e402eb2..553a3f3 100644
> --- a/vdagent/file_xfer.cpp
> +++ b/vdagent/file_xfer.cpp
> @@ -81,7 +81,10 @@ 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);
> +    int len = MultiByteToWideChar(CP_UTF8, 0, file_path, -1, NULL, 0);

We need to check if len is 0 as this indicates a MultiByteToWideChar
failure.

> +    wchar_t wfile_path[MAX_PATH];
> +    MultiByteToWideChar(CP_UTF8, 0, file_path, -1, wfile_path, len);

Shouldn't we allocate a wfile_path so that it can contain 'len'
characters? What happens if 'len' is bigger than MAX_PATH?

> +    handle = CreateFileW(wfile_path, GENERIC_WRITE, 0, NULL, CREATE_NEW,
> 0, NULL);

I think CreateFile could be used here instead of CreateFileW as we are
building with -DUNICODE/-D_UNICODE ?

Christophe

Attachment: pgpoawG_fe61T.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]