diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2007-07-02 22:07:43 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2007-07-02 22:07:43 +0100 |
commit | 1962ac169c14c7b24e276caac0976b8983496fd5 (patch) | |
tree | da8cbf25df48c9d8df20cddf622647ad7a7684dc | |
parent | c3774175d29802202afb226a2661d0c3c52fb7b1 (diff) |
Fixed nick hint function to only set the nick if it's different from
the current one (otherwise the dedupe function will dedupe the nick
against itself).
-rw-r--r-- | protocols/nogaim.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/protocols/nogaim.c b/protocols/nogaim.c index 4f04993c..22d82ecb 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -470,13 +470,19 @@ void imcb_buddy_nick_hint( struct im_connection *ic, char *handle, char *nick ) if( set_getbool( &ic->irc->set, "lcnicks" ) ) nick_lc( newnick ); - nick_dedupe( ic->acc, handle, newnick ); - - /* u->nick will be freed halfway the process, so it can't be - passed as an argument. */ - orig_nick = g_strdup( u->nick ); - user_rename( ic->irc, orig_nick, newnick ); - g_free( orig_nick ); + if( strcmp( u->nick, newnick ) != 0 ) + { + /* Only do this if newnick is different from the current one. + If rejoining a channel, maybe we got this nick already + (and dedupe would only add an underscore. */ + nick_dedupe( ic->acc, handle, newnick ); + + /* u->nick will be freed halfway the process, so it can't be + passed as an argument. */ + orig_nick = g_strdup( u->nick ); + user_rename( ic->irc, orig_nick, newnick ); + g_free( orig_nick ); + } } } |