X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fircd_alloc.c;h=1fc87fa8769219b84d942d9b389a5cc6dbd7f6eb;hb=1570a04e15bec6b2945e4351b1e05211aecdcacc;hp=f77fc0f41a4e9d5b0d11325374dc470ceeafbc07;hpb=182404026d6a5dbff5c91c8071ead76e8d43a10b;p=ircu2.10.12-pk.git diff --git a/ircd/ircd_alloc.c b/ircd/ircd_alloc.c index f77fc0f..1fc87fa 100644 --- a/ircd/ircd_alloc.c +++ b/ircd/ircd_alloc.c @@ -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 @@ -18,24 +18,27 @@ * 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 +/* #include -- Now using assert in ircd_log.h */ #include 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) { @@ -47,12 +50,21 @@ 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); @@ -61,6 +73,13 @@ void* DoMalloc(size_t size, const char* x, const char* y, int z) 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); @@ -70,4 +89,17 @@ void* DoMallocZero(size_t size, const char* x, const char* y, int z) 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