diff options
| author | drstein drstein@31f1291d-b8d6-0310-a050-a5561fc1590b <drstein drstein@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-02-05 19:16:42 +0000 |
|---|---|---|
| committer | drstein drstein@31f1291d-b8d6-0310-a050-a5561fc1590b <drstein drstein@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-02-05 19:16:42 +0000 |
| commit | 2a08701f557179d6a3787aae896d7dd9eb6e8982 (patch) | |
| tree | ff5b7ef0575d94496e85256718da08cba4db84b2 /src/operserv.c | |
| parent | 1baff08ad8255b254149d456c632c853d3dc5c81 (diff) | |
BUILD : 1.7.21 (1374) BUGS : 820 NOTES : do_cmode() called without passing TS
git-svn-id: svn://svn.anope.org/anope/trunk@1374 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1089 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/operserv.c')
| -rw-r--r-- | src/operserv.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/src/operserv.c b/src/operserv.c index 7514d0dcd..b0f1925d2 100644 --- a/src/operserv.c +++ b/src/operserv.c @@ -1668,9 +1668,9 @@ int defconParseModeString(const char *str) int add = -1; /* 1 if adding, 0 if deleting, -1 if neither */ unsigned char mode; CBMode *cbm; - char *str_copy = sstrdup(str); /* We need this copy as str is const -GD */ - char *param; /* Store parameters during mode parsing */ - + char *str_copy = sstrdup(str); /* We need this copy as str is const -GD */ + char *param; /* Store parameters during mode parsing */ + /* Reinitialize everything */ DefConModesOn = 0; DefConModesOff = 0; @@ -1678,9 +1678,9 @@ int defconParseModeString(const char *str) DefConModesCI.mlock_key = NULL; DefConModesCI.mlock_flood = NULL; DefConModesCI.mlock_redirect = NULL; - - /* Initialize strtok() internal buffer */ - strtok(str_copy, " "); + + /* Initialize strtok() internal buffer */ + strtok(str_copy, " "); /* Loop while there are modes to set */ while ((mode = *str++) && (mode != ' ')) { @@ -1699,40 +1699,37 @@ int defconParseModeString(const char *str) if ((int) mode < 128 && (cbm = &cbmodes[(int) mode])->flag != 0) { if (cbm->flags & CBM_NO_MLOCK) { alog("DefConChanModes mode character '%c' cannot be locked", mode); - free(str_copy); + free(str_copy); return 0; } else if (add) { DefConModesOn |= cbm->flag; DefConModesOff &= ~cbm->flag; - if (cbm->cssetvalue) - { - if (!(param = strtok(NULL, " "))) - { - alog("DefConChanModes mode character '%c' has no parameter while one is expected", mode); - free(str_copy); - return 0; - } + if (cbm->cssetvalue) { + if (!(param = strtok(NULL, " "))) { + alog("DefConChanModes mode character '%c' has no parameter while one is expected", mode); + free(str_copy); + return 0; + } cbm->cssetvalue(&DefConModesCI, param); - } + } } else { DefConModesOff |= cbm->flag; if (DefConModesOn & cbm->flag) { DefConModesOn &= ~cbm->flag; - if (cbm->cssetvalue) - { + if (cbm->cssetvalue) { cbm->cssetvalue(&DefConModesCI, NULL); - } + } } } } else { alog("DefConChanModes unknown mode character '%c'", mode); - free(str_copy); + free(str_copy); return 0; } } /* while (*param) */ - - free(str_copy); - + + free(str_copy); + if (ircd->Lmode) { /* We can't mlock +L if +l is not mlocked as well. */ if ((DefConModesOn & ircd->chan_lmode) |
