Fix "FATAL: list_remove: item not found"
Thanks to Jean-Edouard Babin for reporting it. How to reproduce: 1) connect to bip with an irc client using username (eg 'Pilou') 2) disconnect irc client 3) in client configuration, change the case of username (eg 'pilou') 4) reconnect to bip -> bip log FATAL message and exit If old nick and new nick are equal ignoring the case of the characters, don't delete store associated with old nick: only rename it.
This commit is contained in:
parent
ca1b383a74
commit
4d4710acb9
|
@ -475,10 +475,14 @@ void log_nick(log_t *logdata, const char *ircmask, const char *channel,
|
||||||
const char *newnick)
|
const char *newnick)
|
||||||
{
|
{
|
||||||
char *oldnick = nick_from_ircmask(ircmask);
|
char *oldnick = nick_from_ircmask(ircmask);
|
||||||
|
logstore_t* oldstore;
|
||||||
|
logstore_t* newstore;
|
||||||
|
|
||||||
if (hash_includes(&logdata->logfgs, oldnick)) {
|
if ((oldstore = hash_get(&logdata->logfgs, oldnick))) {
|
||||||
if (hash_includes(&logdata->logfgs, newnick))
|
if ((newstore = hash_get(&logdata->logfgs, newnick))
|
||||||
|
&& oldstore != newstore) {
|
||||||
log_drop(logdata, newnick);
|
log_drop(logdata, newnick);
|
||||||
|
}
|
||||||
hash_rename_key(&logdata->logfgs, oldnick, newnick);
|
hash_rename_key(&logdata->logfgs, oldnick, newnick);
|
||||||
}
|
}
|
||||||
free(oldnick);
|
free(oldnick);
|
||||||
|
|
Loading…
Reference in New Issue