summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/modules/os_session.h2
-rw-r--r--modules/commands/os_session.cpp5
-rw-r--r--modules/database/db_old.cpp10
3 files changed, 12 insertions, 5 deletions
diff --git a/include/modules/os_session.h b/include/modules/os_session.h
index 31f02cf9d..65f1c6f75 100644
--- a/include/modules/os_session.h
+++ b/include/modules/os_session.h
@@ -32,6 +32,8 @@ class SessionService : public Service
SessionService(Module *m) : Service(m, "SessionService", "session") { }
+ virtual Exception *CreateException() = 0;
+
virtual void AddException(Exception *e) = 0;
virtual void DelException(Exception *e) = 0;
diff --git a/modules/commands/os_session.cpp b/modules/commands/os_session.cpp
index be003900d..8e210d5da 100644
--- a/modules/commands/os_session.cpp
+++ b/modules/commands/os_session.cpp
@@ -42,6 +42,11 @@ class MySessionService : public SessionService
public:
MySessionService(Module *m) : SessionService(m), Exceptions("Exception") { }
+ Exception *CreateException() anope_override
+ {
+ return new Exception();
+ }
+
void AddException(Exception *e) anope_override
{
this->Exceptions->push_back(e);
diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp
index 37405e308..c017eb681 100644
--- a/modules/database/db_old.cpp
+++ b/modules/database/db_old.cpp
@@ -1070,6 +1070,9 @@ static void LoadOper()
static void LoadExceptions()
{
+ if (!session_service)
+ return;
+
dbFILE *f = open_db_read("OperServ", "exception.db", 9);
if (f == NULL)
return;
@@ -1090,17 +1093,14 @@ static void LoadExceptions()
READ(read_int32(&time, f));
READ(read_int32(&expires, f));
- Exception *exception = new Exception();
+ Exception *exception = session_service->CreateException();
exception->mask = mask;
exception->limit = limit;
exception->who = who;
exception->time = time;
exception->expires = expires;
exception->reason = reason;
- if (session_service)
- session_service->AddException(exception);
- else
- delete exception;
+ session_service->AddException(exception);
}
close_db(f);