// Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // // $Id$ // // Copyright (C) 1998-2006 by Randy Heit (ZDoom). // Copyright (C) 2006-2026 by The Odamex Team. // // 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 the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // DESCRIPTION: // Wrappers around the standard memory allocation routines. // //----------------------------------------------------------------------------- #include "odamex.h" #include #include "i_system.h" #include "m_alloc.h" void *Malloc (size_t size) { // We don't want implementation-defined behaviour! if (!size) return NULL; void *zone = malloc (size); if (!zone) I_FatalError("Could not malloc {} bytes", size); return zone; } void *Calloc (size_t num, size_t size) { // We don't want implementation-defined behaviour! if (!num || !size) return NULL; void *zone = calloc (num, size); if (!zone) I_FatalError("Could not calloc {} bytes", num * size); return zone; } void *Realloc (void *memblock, size_t size) { // We don't want implementation-defined behaviour! Especially for this // as realloc() behaves like malloc() (which doesn't use our Malloc()) if (!size && memblock == NULL) return NULL; void *zone = realloc (memblock, size); if (!zone) I_FatalError("Could not realloc {} bytes", size); return zone; } // // M_Free2 // // Wraps around the standard free() memory function. This variation is slightly // more safer, as it only frees a block if its not NULL and will NULL it on // exiting. void M_Free2 (void **memblock) { if (*memblock != nullptr) { free(*memblock); *memblock = nullptr; } } VERSION_CONTROL (m_alloc_cpp, "$Id$")