added basic ssl support to ircu
[ircu2.10.12-pk.git] / ircd / ircd_alloc.c
index c46bd987d6783a5f028ac1a0a0be813a22f1f5de..1fc87fa8769219b84d942d9b389a5cc6dbd7f6eb 100644 (file)
@@ -1,9 +1,9 @@
 /************************************************************************
  *   IRC - Internet Relay Chat, ircd/ircd_alloc.c
  *   Copyright (C) 1999 Thomas Helvey (BleepSoft)
- *                     
+ *
  *   See file AUTHORS in IRC package for additional names of
- *   the programmers. 
+ *   the programmers.
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
  *   You should have received a copy of the GNU General Public License
  *   along with this program; if not, write to the Free Software
  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *   $Id$
+ */
+/** @file
+ * @brief IRC daemon memory allocation functions.
+ * @version $Id$
  */
 #include "config.h"
 
 #include "ircd_alloc.h"
+#include "ircd_log.h"
 #include "ircd_string.h"
 #include "s_debug.h"
 
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
+#include <string.h>
 
 static void nomem_handler(void);
 
-/* Those ugly globals... */
-OutOfMemoryHandler noMemHandler = nomem_handler;
-void *malloc_tmp;
+/** Variable holding out-of-memory callback. */
+static OutOfMemoryHandler noMemHandler = nomem_handler;
 
+/** Default handler for out-of-memory conditions. */
 static void
 nomem_handler(void)
 {
@@ -46,8 +50,56 @@ nomem_handler(void)
 #endif
 }
 
+/** Set callback function for out-of-memory conditions. */
 void
 set_nomem_handler(OutOfMemoryHandler handler)
 {
   noMemHandler = handler;
 }
+
+#ifndef MDEBUG
+/** Allocate memory.
+ * @param[in] size Number of bytes to allocate.
+ * @param[in] x Type of allocation (ignored).
+ * @param[in] y Name of file doing allocation (ignored).
+ * @param[in] z Line number doing allocation (ignored).
+ * @return Newly allocated block of memory.
+ */
+void* DoMalloc(size_t size, const char* x, const char* y, int z)
+{
+  void* t = malloc(size);
+  if (!t)
+    (*noMemHandler)();
+  return t;
+}
+
+/** Allocate zero-initialized memory.
+ * @param[in] size Number of bytes to allocate.
+ * @param[in] x Type of allocation (ignored).
+ * @param[in] y Name of file doing allocation (ignored).
+ * @param[in] z Line number doing allocation (ignored).
+ * @return Newly allocated block of memory.
+ */
+void* DoMallocZero(size_t size, const char* x, const char* y, int z)
+{
+  void* t = malloc(size);
+  if (!t)
+    (*noMemHandler)();
+  memset(t, 0, size);
+  return t;
+}
+
+/** Resize an allocated block of memory.
+ * @param[in] orig Original block to resize.
+ * @param[in] size Minimum size for new block.
+ * @param[in] file Name of file doing reallocation (ignored).
+ * @param[in] line Line number doing reallocation (ignored).
+ */
+void* DoRealloc(void *orig, size_t size, const char *file, int line)
+{
+  void* t = realloc(orig, size);
+  if (!t)
+    (*noMemHandler)();
+  return t;
+}
+#endif