summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/chanserv.c2
-rw-r--r--src/core/cs_xop.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/chanserv.c b/src/chanserv.c
index ba1147072..a10e78932 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -1857,8 +1857,10 @@ void cs_remove_nick(const NickCore * nc)
if (ca->in_use && ca->nc == nc) {
ca->in_use = 0;
ca->nc = NULL;
+ ci->accesscount--;
}
}
+ CleanAccess(ci);
for (akick = ci->akick, j = 0; j < ci->akickcount; akick++, j++) {
if ((akick->flags & AK_USED) && (akick->flags & AK_ISNICK)
diff --git a/src/core/cs_xop.c b/src/core/cs_xop.c
index a29756856..849cc5fba 100644
--- a/src/core/cs_xop.c
+++ b/src/core/cs_xop.c
@@ -174,9 +174,9 @@ int do_vop(User * u)
int xop_del(User * u, ChannelInfo * ci, ChanAccess * access, int *perm, int uacc, int xlev)
{
- char *nick = access->nc->display;
- if (!access->in_use || access->level != xlev)
+ if (!access->in_use || !access->nc || access->level != xlev)
return 0;
+ char *nick = access->nc->display;
if (!is_services_admin(u) && uacc <= access->level) {
(*perm)++;
return 0;