summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-10-23 18:07:07 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-10-23 18:07:07 +0000
commit2f1b4c7ce35651262f7903e801fd9428881ee05b (patch)
tree20516a60a8b17881ff33fe6a05736c774a2df995
parent2cbb6537d96c253369b3782f2250d1cf38874236 (diff)
Patch from dz to fix bug 622 (config errors build up from /rehash to /rehash), thanks!
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10690 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/configreader.h2
-rw-r--r--src/configreader.cpp10
2 files changed, 8 insertions, 4 deletions
diff --git a/include/configreader.h b/include/configreader.h
index 2ccabc5b4..859e5bddb 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -349,7 +349,7 @@ class CoreExport ServerConfig : public Extensible
/** Error stream, contains error output from any failed configuration parsing.
*/
- std::ostringstream errstr;
+ std::ostringstream* errstr;
/** Holds the new configuration when a rehash occurs so we dont overwrite the existing
* working config with a broken one without checking it first and swapping pointers.
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 493bba8c9..50e86f4df 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -747,7 +747,8 @@ void ServerConfig::Read(bool bail, const std::string &useruid)
static char announceinvites[MAXBUF]; /* options:announceinvites setting */
static char disabledumodes[MAXBUF]; /* Disabled usermodes */
static char disabledcmodes[MAXBUF]; /* Disabled chanmodes */
- errstr.clear();
+ /* std::ostringstream::clear() does not clear the string itself, only the error flags. */
+ this->errstr = new std::ostringstream(std::stringstream::in | std::stringstream::out);
include_stack.clear();
@@ -940,11 +941,14 @@ void ServerConfig::Read(bool bail, const std::string &useruid)
/* Make a copy here so if it fails then we can carry on running with an unaffected config */
newconfig.clear();
- if (!this->DoInclude(newconfig, ServerInstance->ConfigFileName, errstr))
+ if (!this->DoInclude(newconfig, ServerInstance->ConfigFileName, *errstr))
{
- ReportConfigError(errstr.str(), bail, useruid);
+ ReportConfigError(errstr->str(), bail, useruid);
+ delete errstr;
return;
}
+
+ delete errstr;
/* The stuff in here may throw CoreException, be sure we're in a position to catch it. */
try