diff -r 214b4782e5da -r 081733748bbc libpurple/protocols/irc/irc.c --- a/libpurple/protocols/irc/irc.c Wed Sep 04 04:51:35 2013 +0530 +++ b/libpurple/protocols/irc/irc.c Wed Sep 04 05:26:03 2013 +0530 @@ -970,16 +970,6 @@ "auth_plain_in_clear", FALSE); proto_class->protocol_options = g_list_append(proto_class->protocol_options, option); #endif - - purple_prefs_remove("/protocols/irc/quitmsg"); - purple_prefs_remove("/protocols/irc"); - - irc_register_commands(); -} - -static void irc_protocol_base_finalize(IRCProtocolClass *klass) -{ - irc_unregister_commands(); } static void @@ -1013,6 +1003,8 @@ iface->get_max_message_size = irc_get_max_message_size; } +static void irc_protocol_base_finalize(IRCProtocolClass *klass) { } + static PurplePluginInfo * plugin_query(GError **error) { @@ -1038,6 +1030,11 @@ if (!_irc_protocol) return FALSE; + purple_prefs_remove("/protocols/irc/quitmsg"); + purple_prefs_remove("/protocols/irc"); + + irc_register_commands(); + purple_signal_register(_irc_protocol, "irc-sending-text", purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, PURPLE_TYPE_CONNECTION, @@ -1053,6 +1050,8 @@ static gboolean plugin_unload(PurplePlugin *plugin, GError **error) { + irc_unregister_commands(); + if (!purple_protocols_remove(_irc_protocol, error)) return FALSE;