diff options
Diffstat (limited to 'net-im/pidgin/files/pidgin-2.10.0-utf8-validation.patch')
-rw-r--r-- | net-im/pidgin/files/pidgin-2.10.0-utf8-validation.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/net-im/pidgin/files/pidgin-2.10.0-utf8-validation.patch b/net-im/pidgin/files/pidgin-2.10.0-utf8-validation.patch new file mode 100644 index 000000000000..26ee17887bfb --- /dev/null +++ b/net-im/pidgin/files/pidgin-2.10.0-utf8-validation.patch @@ -0,0 +1,27 @@ +# +# +# patch "libpurple/protocols/silc/ops.c" +# from [30ab18780af11a53b6564a44c4e8ebfc1a296d78] +# to [80bd9a7d3faf9e5ef28438647159fe19847e9839] +# +============================================================ +--- libpurple/protocols/silc/ops.c 30ab18780af11a53b6564a44c4e8ebfc1a296d78 ++++ libpurple/protocols/silc/ops.c 80bd9a7d3faf9e5ef28438647159fe19847e9839 +@@ -408,9 +408,16 @@ silc_private_message(SilcClient client, + } + + 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); + } + } |