diff -r f2998a35ba3b -r 0094a64519cb libpurple/protocols/irc/parse.c --- a/libpurple/protocols/irc/parse.c Thu Jun 05 12:25:20 2008 +0000 +++ b/libpurple/protocols/irc/parse.c Thu Jun 05 22:36:21 2008 +0000 @@ -710,5 +710,10 @@ static void irc_parse_error_cb(struct irc_conn *irc, char *input) { - purple_debug(PURPLE_DEBUG_WARNING, "irc", "Unrecognized string: %s\n", input); + 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); + purple_debug(PURPLE_DEBUG_WARNING, "irc", "Unrecognized string: %s\n", clean); + g_free(clean); }