- Added some tools to detect memory leaks.
[ircu2.10.12-pk.git] / ircd / chkconf.c
index 4414e725274efd10e0c9487025153a2332604710..0169c63dab0ffca8dae7a3b609e8c6f812a50c99 100644 (file)
@@ -18,6 +18,8 @@
  *
  * $Id$
  */
+#include "config.h"
+
 #include "s_conf.h"
 #include "client.h"
 #include "class.h"
@@ -503,10 +505,14 @@ static struct ConnectionClass *get_class(int cn, int ism)
 static void new_class(int cn)
 {
   numclasses++;
-  if (classarr)
-    classarr = (int *)MyRealloc(classarr, sizeof(int) * numclasses);
+  if (classarr && numclasses & 0xF == 0)
+  {
+    int **tmp_arr = MyMalloc(classarr * (numclasses + 0x10));
+    MyFree(classarr);
+    memcpy(tmp_arr, classarr, classarr * (numclasses - 1));
+  }
   else
-    classarr = (int *)MyMalloc(sizeof(int));
+    classarr = (int *)MyMalloc(sizeof(int) * numclasses);
   classarr[numclasses - 1] = cn;
 }