From: Ricardo Mones Date: Wed, 17 Dec 2014 15:45:12 +0000 (+0100) Subject: Improve feedback to user when bug #3349 X-Git-Tag: 3.12.0~198 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=ff2f663ebca80be4991c71be724d5a29ef5a3bdf Improve feedback to user when bug #3349 --- diff --git a/src/codeconv.c b/src/codeconv.c index 98981e135..85dabf61f 100644 --- a/src/codeconv.c +++ b/src/codeconv.c @@ -749,8 +749,17 @@ gchar *conv_codeset_strdup(const gchar *inbuf, size_t len; CodeConvFunc conv_func; - if (!strcmp2(src_code, dest_code)) + if (!strcmp2(src_code, dest_code)) { + CharSet dest_charset = conv_get_charset_from_str(dest_code); + if (dest_charset == C_UTF_8) { + /* ensure valid UTF-8 if target is UTF-8 */ + if (!g_utf8_validate(inbuf, -1, NULL)) { + return NULL; + } + } + /* otherwise, try for a lucky day */ return g_strdup(inbuf); + } src_code = conv_get_fallback_for_private_encoding(src_code); conv_func = conv_get_code_conv_func(src_code, dest_code); diff --git a/src/compose.c b/src/compose.c index 8f8997558..03dbf485e 100644 --- a/src/compose.c +++ b/src/compose.c @@ -3643,9 +3643,18 @@ static ComposeInsertResult compose_insert_file(Compose *compose, const gchar *fi if (g_utf8_validate(buf, -1, NULL) == TRUE) str = g_strdup(buf); - else + else { str = conv_codeset_strdup (buf, cur_encoding, CS_INTERNAL); + if (!str) { + alertpanel_error(_("Unable to insert the file " + "because converting to the internal encoding " + "failed. This may be caused by a binary file " + "or a wrongly encoded text file. If you are " + "sure this is the right file then try " + "attaching it instead.")); + } + } if (!str) continue; /* strip if DOS/Windows file,