summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-11-25 20:57:22 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-11-25 20:57:22 +0000
commit822e75b501efc57c533e65f68c55debd453415fd (patch)
tree2b57aaf3f8e6a5fdf58ceeddb3705f7aa3eaf627
parente2c6825cd233a4271f7bdb79c2f294ad7c4566b9 (diff)
Fix a few more XOP related problems
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2668 5417fbe8-f217-4b02-8779-1006273d7864
-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;