diff options
author | Markus Uhlin <markus@nifty-networks.net> | 2023-12-07 21:31:49 +0100 |
---|---|---|
committer | Markus Uhlin <markus@nifty-networks.net> | 2023-12-07 21:31:49 +0100 |
commit | 79b59f9b30fb6a1fdf8c3efb446271f7cb00d434 (patch) | |
tree | f6ade4ccbc3af20d825edacfd12b5da8ded8d240 /FICS/rmalloc.c |
FICS 1.6.2
Diffstat (limited to 'FICS/rmalloc.c')
-rw-r--r-- | FICS/rmalloc.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/FICS/rmalloc.c b/FICS/rmalloc.c new file mode 100644 index 0000000..9eb0dbc --- /dev/null +++ b/FICS/rmalloc.c @@ -0,0 +1,87 @@ +/* rmalloc.c + * + */ + +/* + fics - An internet chess server. + Copyright (C) 1993 Richard V. Nash + + 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. +*/ + +/* Revision history: + name email yy/mm/dd Change + Richard Nash 93/10/22 Created +*/ + + +#include "stdinclude.h" + +#include "common.h" + +PUBLIC unsigned int allocated_size = 0; +PUBLIC unsigned int malloc_count = 0; +PUBLIC unsigned int free_count = 0; + +PUBLIC void *rmalloc(int byteSize) +{ + void *newptr; +#ifdef HASMALLOCSIZE + allocated_size += byteSize; +#endif + malloc_count++; + newptr = malloc(byteSize); + if (newptr == NULL) { + fprintf(stderr, "Out of memory in malloc!\n"); + abort(); + } + return newptr; +} + +PUBLIC void *rrealloc(void *ptr, int byteSize) +{ +#ifdef HASMALLOCSIZE + allocated_size += (byteSize - malloc_size(ptr)); +#endif + if (ptr == NULL) { /* Sparky 3/16/95 */ + fprintf(stderr, "Hoser! Null ptr passed to rrealloc!!\n"); + return NULL; + } else { + void *newptr = realloc(ptr, byteSize); + if (newptr == NULL) { + fprintf(stderr, "Out of memory in rrealloc!\n"); + abort(); + } + return newptr; + } +} + +PUBLIC void rfree(void *ptr) +{ +#ifdef HASMALLOCSIZE + allocated_size = allocated_size - malloc_size(ptr); +#endif + if (ptr == NULL) { /* Sparky 3/16/95 */ + fprintf(stderr, "Hoser! Null ptr passed to rfree!!\n"); + } else { + free_count++; + free(ptr); + } +} + +PUBLIC void strfree (char *string) +{ + /* This routine is often called on strings that are either + a rmalloc'd value or NULL. So it's not an error to see + a NULL here. --mann + */ + if (string != NULL) rfree (string); +} |