diff options
-rw-r--r-- | src/chanserv.c | 2 | ||||
-rw-r--r-- | src/core/cs_xop.c | 4 |
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; |