diff options
Diffstat (limited to 'src/kvilib/core/kvi_malloc.h')
-rw-r--r-- | src/kvilib/core/kvi_malloc.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/kvilib/core/kvi_malloc.h b/src/kvilib/core/kvi_malloc.h new file mode 100644 index 00000000..8a7204a5 --- /dev/null +++ b/src/kvilib/core/kvi_malloc.h @@ -0,0 +1,88 @@ +#ifndef _KVI_MALLOC_H_ +#define _KVI_MALLOC_H_ + +//============================================================================= +// +// File : kvi_malloc.h +// Creation date : Sun Jun 18 2000 18:18:36 CEST by Szymon Stefanek +// +// This file is part of the KVirc irc client distribution +// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net) +// +// 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 opinion) 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. +// +// 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. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +//============================================================================= + +//============================================================================= +// C memory allocation routines: macros in common compilations +//============================================================================= + +#include "kvi_settings.h" + +#include <stdlib.h> + +#ifdef COMPILE_MEMORY_PROFILE + + #ifdef COMPILE_ON_WINDOWS + #error "This stuff should be never compiled on Windows" + #endif + + extern void * kvi_malloc(int size); + extern void * kvi_realloc(void * ptr,int size); + extern void kvi_free(void * ptr); + +#else + + #ifndef COMPILE_MEMORY_CHECKS + + // These two are the "common" ones + #define kvi_malloc(__size_) malloc(__size_) + #define kvi_realloc(__ptr_,__size_) realloc((void *)__ptr_,__size_) + + #else + + #ifdef COMPILE_ON_WINDOWS + #error "This stuff should be never compiled on Windows" + #endif + + // Want to check all the pointers + #define kvi_malloc(__size_) kvi_safe_malloc(__size_) + #define kvi_realloc(__ptr_,__size_) kvi_safe_realloc((void *)__ptr_,__size_) + + #ifndef _KVI_MALLOC_CPP_ + extern void outOfMemory(); + #endif + + inline void * kvi_safe_malloc(int size) + { + void * ptr = malloc(size); + if(!ptr)outOfMemory(); + return ptr; + } + + inline void * kvi_safe_realloc(void * ptr,int size) + { + ptr = realloc(ptr,size); + if(!ptr)outOfMemory(); + return ptr; + } + + #endif //COMPILE_MEMORY_CHECKS + + #define kvi_free(__ptr_) free((void *)__ptr_) + +#endif + +#endif //_KVI_MALLOC_H_ |