summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes1
-rw-r--r--chanserv.c5
-rw-r--r--memoserv.c6
-rw-r--r--modules.c1
-rw-r--r--mysql.c18
-rw-r--r--nickserv.c10
-rw-r--r--services.h4
-rw-r--r--version.log6
8 files changed, 39 insertions, 12 deletions
diff --git a/Changes b/Changes
index e303e2c45..a538a51a0 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
Anope Version 1.7.x (will be renamed when next release is produced)
-------------------
Provided by Anope Dev. <dev@anope.org>
+2004/06/11 Fixed a bug with module unload / memo moduleData ( #43 )
2004/06/05 Fixed bug with RDB and empty nickserv greet message (# 28).
2004/05/04 Fixed Badwords kicker to ignore control characters and color codes.
2004/05/04 anoperc bugfixes including checking if anope binary exists.
diff --git a/chanserv.c b/chanserv.c
index 304a72cfe..4adabd737 100644
--- a/chanserv.c
+++ b/chanserv.c
@@ -693,7 +693,7 @@ void chanserv(User * u, char *buf)
void load_cs_dbase(void)
{
dbFILE *f;
- int ver, i, j, c;
+ int ver, i, j, c, m;
ChannelInfo *ci, **last, *prev;
int failed = 0;
@@ -981,6 +981,9 @@ void load_cs_dbase(void)
memos->time = tmp32;
SAFE(read_buffer(memos->sender, f));
SAFE(read_string(&memos->text, f));
+ for (m = 0; m < MAX_CMD_HASH; m++) {
+ memos->moduleData[m] = NULL;
+ }
}
}
diff --git a/memoserv.c b/memoserv.c
index b02573740..04bac6fee 100644
--- a/memoserv.c
+++ b/memoserv.c
@@ -266,6 +266,7 @@ void memo_send(User * u, char *name, char *text, int z)
time_t now = time(NULL);
char *source = u->na->nc->display;
int is_servadmin = is_services_admin(u);
+ int j;
if (readonly) {
notice_lang(s_MemoServ, u, MEMO_SEND_DISABLED);
@@ -314,12 +315,15 @@ void memo_send(User * u, char *name, char *text, int z)
mi->memos = srealloc(mi->memos, sizeof(Memo) * mi->memocount);
m = &mi->memos[mi->memocount - 1];
strscpy(m->sender, source, NICKMAX);
+ for (j = 0; j < MAX_CMD_HASH; j++)
+ m->moduleData[j] = NULL;
if (mi->memocount > 1) {
m->number = m[-1].number + 1;
if (m->number < 1) {
int i;
- for (i = 0; i < mi->memocount; i++)
+ for (i = 0; i < mi->memocount; i++) {
mi->memos[i].number = i + 1;
+ }
}
} else {
m->number = 1;
diff --git a/modules.c b/modules.c
index 8a8f2c401..77eefb2d7 100644
--- a/modules.c
+++ b/modules.c
@@ -1996,7 +1996,6 @@ void moduleCleanStruct(ModuleData * moduleData[])
ModuleDataItem *item = NULL, *nextItem = NULL;
int i;
-
for (i = 0; i < 1024; i++) {
for (md = moduleData[i]; md; md = nextMd) {
nextMd = md->next;
diff --git a/mysql.c b/mysql.c
index c72ea5aa1..5424f8b2e 100644
--- a/mysql.c
+++ b/mysql.c
@@ -115,7 +115,7 @@ int db_mysql_query(char *sql)
s = db_mysql_quote(sql);
alog(s);
free(s);
-
+
}
result = mysql_query(mysql, sql);
@@ -157,7 +157,7 @@ char *db_mysql_quote(char *sql)
{
int slen;
char *quoted;
-
+
if (!sql || !do_mysql) {
return sstrdup("");
@@ -1175,7 +1175,7 @@ void db_mysql_load_cs_dbase(void)
{
char sqlcmd[MAX_SQL_BUF], *tempstr;
ChannelInfo *ci;
- int n_levels, j;
+ int n_levels, j, m;
MYSQL_RES *res;
MYSQL_ROW row;
@@ -1345,6 +1345,9 @@ void db_mysql_load_cs_dbase(void)
memos->time = atoi(row[2]);
snprintf(memos->sender, NICKMAX, "%s", row[3]);
memos->text = sstrdup(row[4]);
+ for (m = 0; m < MAX_CMD_HASH; m++) {
+ memos->moduleData[m] = NULL;
+ }
memos++;
}
}
@@ -1448,7 +1451,7 @@ void db_mysql_load_ns_dbase(void)
NickAlias *na;
MYSQL_RES *res;
MYSQL_ROW row;
- int i, j;
+ int i, j, m;
if (!do_mysql)
return;
@@ -1529,8 +1532,8 @@ void db_mysql_load_ns_dbase(void)
res = mysql_store_result(mysql);
while ((row = mysql_fetch_row(res))) {
if (strlen(row[0]) > 0) {
- *access = sstrdup(row[0]);
- access++;
+ *access = sstrdup(row[0]);
+ access++;
}
}
mysql_free_result(res);
@@ -1556,6 +1559,9 @@ void db_mysql_load_ns_dbase(void)
memos->time = atoi(row[2]);
snprintf(memos->sender, NICKMAX, "%s", row[3]);
memos->text = sstrdup(row[4]);
+ for (m = 0; m < MAX_CMD_HASH; m++) {
+ memos->moduleData[m] = NULL;
+ }
memos++;
}
mysql_free_result(res);
diff --git a/nickserv.c b/nickserv.c
index a68a0ba5e..0a05a58b3 100644
--- a/nickserv.c
+++ b/nickserv.c
@@ -369,7 +369,7 @@ void nickserv(User * u, char *buf)
void load_old_ns_dbase(void)
{
dbFILE *f;
- int ver, i, j, c;
+ int ver, i, j, c, m;
NickAlias *na, *na2, *next;
NickCore *nc;
int failed = 0;
@@ -558,6 +558,9 @@ void load_old_ns_dbase(void)
memos->time = tmp32;
SAFE(read_buffer(memos->sender, f));
SAFE(read_string(&memos->text, f));
+ for (m = 0; m < MAX_CMD_HASH; m++) {
+ memos->moduleData[m] = NULL;
+ }
}
}
@@ -658,7 +661,7 @@ void load_ns_req_db(void)
void load_ns_dbase(void)
{
dbFILE *f;
- int ver, i, j, c;
+ int ver, i, j, c, m;
NickAlias *na, **nalast, *naprev;
NickCore *nc, **nclast, *ncprev;
int failed = 0;
@@ -754,6 +757,9 @@ void load_ns_dbase(void)
memos->time = tmp32;
SAFE(read_buffer(memos->sender, f));
SAFE(read_string(&memos->text, f));
+ for (m = 0; m < MAX_CMD_HASH; m++) {
+ memos->moduleData[m] = NULL;
+ }
}
}
diff --git a/services.h b/services.h
index 88b4a7051..e207e971b 100644
--- a/services.h
+++ b/services.h
@@ -19,6 +19,10 @@
#include "sysconf.h"
#include "config.h"
+#ifndef MAX_CMD_HASH
+#define MAX_CMD_HASH 1024
+#endif
+
/* Some Linux boxes (or maybe glibc includes) require this for the
* prototype of strsignal(). */
#define _GNU_SOURCE
diff --git a/version.log b/version.log
index 12d3ce043..9b99d6221 100644
--- a/version.log
+++ b/version.log
@@ -8,11 +8,15 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="2"
-VERSION_BUILD="91"
+VERSION_BUILD="92"
VERSION_EXTRA=""
# $Log$
#
+# BUILD : 1.7.2 (92)
+# BUGS : 43
+# NOTES : Fixed moduleData error with memo Data handeling
+#
# BUILD : 1.7.2 (91)
# BUGS :
# NOTES : db_mysql_query memory usage tweaked.