--- a/libpurple/protocols/irc/parse.c Sat Aug 22 04:02:53 2020 -0500 +++ b/libpurple/protocols/irc/parse.c Sat Aug 22 04:03:26 2020 -0500 @@ -289,7 +289,7 @@ if (encodings[0] == NULL) { g_strfreev(encodings); - return purple_utf8_salvage(string); + return g_utf8_make_valid(string, -1); } for (i = 0; encodings[i] != NULL; i++) { @@ -311,7 +311,7 @@ } g_strfreev(encodings); - return purple_utf8_salvage(string); + return g_utf8_make_valid(string, -1); } /* This function is shamelessly stolen from glib--it is an old version of the @@ -688,7 +688,7 @@ purple_signal_emit(_irc_protocol, "irc-receiving-text", gc, &input); if (purple_debug_is_verbose()) { - char *clean = purple_utf8_salvage(input); + char *clean = g_utf8_make_valid(input, -1); clean = g_strstrip(clean); purple_debug_misc("irc", ">> %s\n", clean); g_free(clean); @@ -754,7 +754,7 @@ * field has inadvertently been marked verbatim, this * could cause weirdness. */ tmp = g_strndup(cur, end - cur); - args[i] = purple_utf8_salvage(tmp); + args[i] = g_utf8_make_valid(tmp, -1); g_free(tmp); cur += end - cur; break; @@ -775,7 +775,7 @@ case '*': /* Ditto 'v' above; we're going to salvage this in case * it leaks past the IRC protocol */ - args[i] = purple_utf8_salvage(cur); + args[i] = g_utf8_make_valid(cur, -1); cur = cur + strlen(cur); break; default: @@ -809,7 +809,7 @@ char *clean; /* This really should be escaped somehow that you can tell what * the junk was -- but as it is, it can crash glib. */ - clean = purple_utf8_salvage(input); + clean = g_utf8_make_valid(input, -1); purple_debug(PURPLE_DEBUG_WARNING, "irc", "Unrecognized string: %s\n", clean); g_free(clean); }