diff -ru irssi-xmpp-0.52.o/src/core/rosters.c irssi-xmpp-0.52/src/core/rosters.c --- irssi-xmpp-0.52.o/src/core/rosters.c 2014-01-12 10:32:05.074196313 +0100 +++ irssi-xmpp-0.52/src/core/rosters.c 2014-01-12 10:34:08.271699086 +0100 @@ -86,8 +86,15 @@ resource1 = (XMPP_ROSTER_RESOURCE_REC *)resource1_ptr; resource2 = (XMPP_ROSTER_RESOURCE_REC *)resource2_ptr; if ((cmp = resource2->priority - resource1->priority) == 0 - && (cmp = resource2->show - resource1->show) == 0) + && (cmp = resource2->show - resource1->show) == 0) { + if (resource1->name == resource2->name) + return 0; + if (resource1->name == NULL) + return -1; + if (resource2->name == NULL) + return 1; return strcmp(resource1->name, resource2->name); + } return cmp; }