]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Use nsmalloc/nsfree for chanserv.
authorGunnar Beutner <redacted>
Tue, 30 Jul 2013 17:13:57 +0000 (19:13 +0200)
committerGunnar Beutner <redacted>
Tue, 30 Jul 2013 17:13:57 +0000 (19:13 +0200)
chanserv/chanserv.h
chanserv/database/chanservdb.c
chanserv/database/chanservdb_alloc.c

index 280a3977db7bbf44b697d88d6c0627af444a7ec0..b930c254e18b0596f033dc4369710ca68242d489 100644 (file)
@@ -753,8 +753,6 @@ extern sstring *cs_quitreason;
 void chanserv_finalinit();
 
 /* chanservalloc.c */
-void chanservallocinit();
-void csfreeall();
 regchan *getregchan();
 void freeregchan(regchan *rcp);
 reguser *getreguser();
index 11493c8950a334458f7605458a2c8324e5389606..d977b0deccd13e1af17299151fdd0b1c8e44c69b 100644 (file)
@@ -236,8 +236,7 @@ void _init() {
   chanservext=registerchanext("chanserv");
   chanservaext=registerauthnameext("chanserv",1);
 
-  /* Set up the allocators and hashes */
-  chanservallocinit();
+  /* Set up the hashes */
   chanservhashinit();
 
   /* And the messages */
index 2295d1215346804e07d994c7b749369e7b30dbda..39c8b90eb2d29911765e38e95bd39904513690de 100644 (file)
@@ -6,41 +6,11 @@
 #include "../chanserv.h"
 #include "../../core/nsmalloc.h"
 
-#include <stdlib.h>
-
-#define ALLOCUNIT 100
-
-regchan     *csfreechans;
-reguser     *csfreeusers;
-regchanuser *csfreechanusers;
-regban      *csfreeregbans;
-activeuser  *csfreeactiveusers;
-maildomain  *csfreemaildomains;
-
-void *csmallocs;
-
-void chanservallocinit() {
-  csfreechans=NULL;
-  csfreeusers=NULL;
-  csfreechanusers=NULL;
-  csfreeregbans=NULL;
-  csfreeactiveusers=NULL;
-}
-
 regchan *getregchan() {
-  int i;
-  regchan *rcp;
-  
-  if (csfreechans==NULL) {
-    csfreechans=(regchan *)nsmalloc(POOL_CHANSERVDB,ALLOCUNIT*sizeof(regchan));
-    for (i=0;i<(ALLOCUNIT-1);i++) {
-      csfreechans[i].index=(chanindex *)&(csfreechans[i+1]);
-    }
-    csfreechans[ALLOCUNIT-1].index=NULL;
-  }
-
-  rcp=csfreechans;
-  csfreechans=(regchan *)rcp->index;
+  regchan *rcp = nsmalloc(POOL_CHANSERVDB, sizeof(regchan));
+
+  if (!rcp)
+    return NULL;  
   
   tagregchan(rcp);
 
@@ -49,24 +19,14 @@ regchan *getregchan() {
 
 void freeregchan(regchan *rcp) {
   verifyregchan(rcp);
-  rcp->index=(chanindex *)csfreechans;
-  csfreechans=rcp;
+  nsfree(POOL_CHANSERVDB, rcp);
 }
 
 reguser *getreguser() {
-  int i;
-  reguser *rup;
-
-  if (csfreeusers==NULL) {
-    csfreeusers=(reguser *)nsmalloc(POOL_CHANSERVDB,ALLOCUNIT*sizeof(reguser));
-    for (i=0;i<(ALLOCUNIT-1);i++) {
-      csfreeusers[i].nextbyname=&(csfreeusers[i+1]);
-    }
-    csfreeusers[ALLOCUNIT-1].nextbyname=NULL;
-  }
-  
-  rup=csfreeusers;
-  csfreeusers=rup->nextbyname;
+  reguser *rup = nsmalloc(POOL_CHANSERVDB, sizeof(reguser));
+
+  if (!rup)
+    return NULL;
   
   tagreguser(rup);
   
@@ -75,24 +35,14 @@ reguser *getreguser() {
 
 void freereguser(reguser *rup) {
   verifyreguser(rup);
-  rup->nextbyname=csfreeusers;
-  csfreeusers=rup;
+  nsfree(POOL_CHANSERVDB, rup);
 }
 
 regchanuser *getregchanuser() {
-  int i;
-  regchanuser *rcup;
-
-  if (csfreechanusers==NULL) {
-    csfreechanusers=(regchanuser *)nsmalloc(POOL_CHANSERVDB,ALLOCUNIT*sizeof(regchanuser));
-    for (i=0;i<(ALLOCUNIT-1);i++) {
-      csfreechanusers[i].nextbyuser=&(csfreechanusers[i+1]);
-    }
-    csfreechanusers[ALLOCUNIT-1].nextbyuser=NULL;
-  }
+  regchanuser *rcup = nsmalloc(POOL_CHANSERVDB, sizeof(regchanuser));
 
-  rcup=csfreechanusers;
-  csfreechanusers=rcup->nextbyuser;
+  if (!rcup)
+    return NULL;
 
   tagregchanuser(rcup);
 
@@ -101,24 +51,14 @@ regchanuser *getregchanuser() {
 
 void freeregchanuser(regchanuser *rcup) {
   verifyregchanuser(rcup);
-  rcup->nextbyuser=csfreechanusers;
-  csfreechanusers=rcup;
+  nsfree(POOL_CHANSERVDB, rcup);
 }
 
 regban *getregban() {
-  int i;
-  regban *rbp;
-  
-  if (csfreeregbans==NULL) {
-    csfreeregbans=(regban *)nsmalloc(POOL_CHANSERVDB,ALLOCUNIT*sizeof(regban));
-    for (i=0;i<(ALLOCUNIT-1);i++) {
-      csfreeregbans[i].next=&(csfreeregbans[i+1]);
-    }
-    csfreeregbans[ALLOCUNIT-1].next=NULL;
-  }
-  
-  rbp=csfreeregbans;
-  csfreeregbans=rbp->next;
+  regban *rbp = nsmalloc(POOL_CHANSERVDB, sizeof(regban));
+
+  if (!rbp)
+    return NULL;
 
   tagregchanban(rbp);
   
@@ -127,25 +67,15 @@ regban *getregban() {
 
 void freeregban(regban *rbp) {
   verifyregchanban(rbp);
-  rbp->next=csfreeregbans;
-  csfreeregbans=rbp;
+  nsfree(POOL_CHANSERVDB, rbp);
 }
 
 activeuser *getactiveuser() {
-  int i;
-  activeuser *aup;
-
-  if (csfreeactiveusers==NULL) {
-    csfreeactiveusers=(activeuser *)nsmalloc(POOL_CHANSERVDB,ALLOCUNIT*sizeof(activeuser));
-    for (i=0;i<(ALLOCUNIT-1);i++) {
-      csfreeactiveusers[i].next=&(csfreeactiveusers[i+1]);
-    }
-    csfreeactiveusers[ALLOCUNIT-1].next=NULL;
-  }
-  
-  aup=csfreeactiveusers;
-  csfreeactiveusers=aup->next;
-  
+  activeuser *aup = nsmalloc(POOL_CHANSERVDB, sizeof(activeuser));
+
+  if (!aup)
+    return NULL;
+
   tagactiveuser(aup);
   
   aup->authattempts=0;
@@ -157,24 +87,14 @@ activeuser *getactiveuser() {
 
 void freeactiveuser(activeuser *aup) {
   verifyactiveuser(aup);
-  aup->next=csfreeactiveusers;
-  csfreeactiveusers=aup;
+  nsfree(POOL_CHANSERVDB, aup);
 }
 
 maildomain *getmaildomain() {
-  int i;
-  maildomain *mdp;
-
-  if (csfreemaildomains==NULL) {
-    csfreemaildomains=(maildomain *)nsmalloc(POOL_CHANSERVDB,ALLOCUNIT*sizeof(maildomain));
-    for (i=0;i<(ALLOCUNIT-1);i++) {
-      csfreemaildomains[i].nextbyname=&(csfreemaildomains[i+1]);
-    }
-    csfreemaildomains[ALLOCUNIT-1].nextbyname=NULL;
-  }
+  maildomain *mdp = nsmalloc(POOL_CHANSERVDB, sizeof(maildomain));
 
-  mdp=csfreemaildomains;
-  csfreemaildomains=mdp->nextbyname;
+  if (!mdp)
+    return NULL;
 
   tagmaildomain(mdp);
 
@@ -183,13 +103,15 @@ maildomain *getmaildomain() {
 
 void freemaildomain(maildomain *mdp) {
   verifymaildomain(mdp);
-  mdp->nextbyname=csfreemaildomains;
-  csfreemaildomains=mdp;
+  nsfree(POOL_CHANSERVDB, mdp);
 }
 
 maillock *getmaillock() {
-  /* we don't create too many of these */
-  maillock *mlp = nsmalloc(POOL_CHANSERVDB,sizeof(maillock));
+  maillock *mlp = nsmalloc(POOL_CHANSERVDB, sizeof(maillock));
+
+  if (!mlp)
+    return NULL;
+
   tagmaillock(mlp);
 
   return mlp;
@@ -200,5 +122,5 @@ void freemaillock(maillock *mlp) {
 
   freesstring(mlp->pattern);
   freesstring(mlp->reason);
-  nsfree(POOL_CHANSERVDB,mlp);
+  nsfree(POOL_CHANSERVDB, mlp);
 }