about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/commands.c5
-rw-r--r--src/roster_list.c20
-rw-r--r--src/roster_list.h2
3 files changed, 14 insertions, 13 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index 1bc53ed6..a301efd4 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1110,7 +1110,10 @@ cmd_roster(gchar **args, struct cmd_help_t help)
             return TRUE;
         }
 
-        roster_change_name(jid, name);
+        const char *barejid = p_contact_barejid(contact);
+        roster_change_name(contact, name);
+        GSList *groups = p_contact_groups(contact);
+        roster_send_name_change(barejid, name, groups);
 
         if (name == NULL) {
             cons_show("Nickname for %s removed.", jid);
diff --git a/src/roster_list.c b/src/roster_list.c
index fa00437b..c4329a3b 100644
--- a/src/roster_list.c
+++ b/src/roster_list.c
@@ -30,8 +30,8 @@
 #include "contact.h"
 #include "jid.h"
 #include "tools/autocomplete.h"
-#include "xmpp/xmpp.h"
 #include "profanity.h"
+#include "xmpp/xmpp.h"
 
 // nicknames
 static Autocomplete name_ac;
@@ -157,21 +157,19 @@ roster_free(void)
 }
 
 void
-roster_change_name(const char * const barejid, const char * const new_name)
+roster_change_name(PContact contact, const char * const new_name)
 {
-    PContact contact = g_hash_table_lookup(contacts, barejid);
-    const char * current_name = NULL;
+    assert(contact != NULL);
+
+    const char *current_name = NULL;
+    const char *barejid = p_contact_barejid(contact);
+
     if (p_contact_name(contact) != NULL) {
         current_name = strdup(p_contact_name(contact));
     }
 
-    if (contact != NULL) {
-        p_contact_set_name(contact, new_name);
-        _replace_name(current_name, new_name, barejid);
-
-        GSList *groups = p_contact_groups(contact);
-        roster_send_name_change(barejid, new_name, groups);
-    }
+    p_contact_set_name(contact, new_name);
+    _replace_name(current_name, new_name, barejid);
 }
 
 void
diff --git a/src/roster_list.h b/src/roster_list.h
index 9382081b..85a4cffc 100644
--- a/src/roster_list.h
+++ b/src/roster_list.h
@@ -37,7 +37,7 @@ gboolean roster_contact_offline(const char * const barejid,
 void roster_reset_search_attempts(void);
 void roster_init(void);
 void roster_free(void);
-void roster_change_name(const char * const barejid, const char * const new_name);
+void roster_change_name(PContact contact, const char * const new_name);
 void roster_remove(const char * const name, const char * const barejid);
 void roster_update(const char * const barejid, const char * const name,
     GSList *groups, const char * const subscription, gboolean pending_out);