# HG changeset patch # User Ethan Blanton # Date 1317346264 0 # Node ID d9d33a4b56327d7361515ddc5755517ce5bae8a9 # Parent 88a46649de3d7905765bc2a1f2e61cac221ed74b Salvage incoming SILC text if necessary. Fixes #14636 diff -r 88a46649de3d -r d9d33a4b5632 libpurple/protocols/silc/ops.c --- a/libpurple/protocols/silc/ops.c Sun Sep 11 04:18:46 2011 +0000 +++ b/libpurple/protocols/silc/ops.c Fri Sep 30 01:31:04 2011 +0000 @@ -408,9 +408,16 @@ } if (flags & SILC_MESSAGE_FLAG_UTF8) { - tmp = g_markup_escape_text((const char *)message, -1); + const char *msg = (const char *)message; + char *salvaged = NULL; + if (!g_utf8_validate((const char *)message, -1, NULL)) { + salvaged = purple_utf8_salvage((const char *)message); + msg = salvaged; + } + tmp = g_markup_escape_text(msg, -1); /* Send to Purple */ serv_got_im(gc, sender->nickname, tmp, 0, time(NULL)); + g_free(salvaged); g_free(tmp); } }