Use g_utf8_make_valid if available for cleaner utf8 handling (#2065)

This commit is contained in:
Joseph Bisch 2017-10-02 15:11:42 -04:00 committed by TingPing
parent 0c494a9c24
commit 07f1fc60da
2 changed files with 15 additions and 1 deletions

View File

@ -258,6 +258,9 @@ static void
server_inline (server *serv, char *line, gssize len) server_inline (server *serv, char *line, gssize len)
{ {
gsize len_utf8; gsize len_utf8;
if (!strcmp (serv->encoding, "UTF-8"))
line = text_fixup_invalid_utf8 (line, len, &len_utf8);
else
line = text_convert_invalid (line, len, serv->read_converter, unicode_fallback_string, &len_utf8); line = text_convert_invalid (line, len, serv->read_converter, unicode_fallback_string, &len_utf8);
fe_add_rawlog (serv, line, len_utf8, FALSE); fe_add_rawlog (serv, line, len_utf8, FALSE);

View File

@ -814,6 +814,16 @@ text_convert_invalid (const gchar* text, gssize len, GIConv converter, const gch
gchar * gchar *
text_fixup_invalid_utf8 (const gchar* text, gssize len, gsize *len_out) text_fixup_invalid_utf8 (const gchar* text, gssize len, gsize *len_out)
{ {
#if GLIB_CHECK_VERSION (2, 52, 0)
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
gchar *result = g_utf8_make_valid (text, len);
G_GNUC_END_IGNORE_DEPRECATIONS
if (len_out)
{
*len_out = strlen (result);
}
return result;
#else
static GIConv utf8_fixup_converter = NULL; static GIConv utf8_fixup_converter = NULL;
if (utf8_fixup_converter == NULL) if (utf8_fixup_converter == NULL)
{ {
@ -821,6 +831,7 @@ text_fixup_invalid_utf8 (const gchar* text, gssize len, gsize *len_out)
} }
return text_convert_invalid (text, len, utf8_fixup_converter, unicode_fallback_string, len_out); return text_convert_invalid (text, len, utf8_fixup_converter, unicode_fallback_string, len_out);
#endif
} }
void void