diff options
Diffstat (limited to 'desktop/loginlist.c')
-rw-r--r-- | desktop/loginlist.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/desktop/loginlist.c b/desktop/loginlist.c index 3702953c6..ca5ab7ea8 100644 --- a/desktop/loginlist.c +++ b/desktop/loginlist.c @@ -84,10 +84,13 @@ void login_list_add(char *host, char* logindets) warn_user("NoMemory", 0); return; } - nli->prev = loginlist->prev; - nli->next = loginlist; - loginlist->prev->next = nli; - loginlist->prev = nli; + + /* prepend to list so that more recent additions are + encountered first in login_list_get */ + nli->next = loginlist->next; + nli->prev = loginlist; + loginlist->next->prev = nli; + loginlist->next = nli; LOG(("Adding %s", temp)); #ifndef NDEBUG @@ -149,9 +152,9 @@ struct login *login_list_get(char *url) do { LOG(("%s, %d", temp, strlen(temp))); - for (nli = loginlist->next; nli != loginlist && - (strcasecmp(nli->host, temp)!=0); - nli = nli->next) + for (nli = loginlist->next; nli != loginlist && + (strcasecmp(nli->host, temp)!=0); + nli = nli->next) /* do nothing */; if (nli != loginlist) { |