|
|
1.1 ! root 1: /* Part of CPP library. (memory allocation - xmalloc etc) ! 2: Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. ! 3: Written by Per Bothner, 1994. ! 4: Based on CCCP program by by Paul Rubin, June 1986 ! 5: Adapted to ANSI C, Richard Stallman, Jan 1987 ! 6: ! 7: This program is free software; you can redistribute it and/or modify it ! 8: under the terms of the GNU General Public License as published by the ! 9: Free Software Foundation; either version 2, or (at your option) any ! 10: later version. ! 11: ! 12: This program is distributed in the hope that it will be useful, ! 13: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 15: GNU General Public License for more details. ! 16: ! 17: You should have received a copy of the GNU General Public License ! 18: along with this program; if not, write to the Free Software ! 19: Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! 20: ! 21: In other words, you are welcome to use, share and improve this program. ! 22: You are forbidden to forbid anyone else to use, share and improve ! 23: what you give them. Help stamp out software-hoarding! */ ! 24: ! 25: #include "config.h" ! 26: ! 27: static void ! 28: memory_full () ! 29: { ! 30: fatal ("Memory exhausted."); ! 31: } ! 32: ! 33: char * ! 34: xmalloc (size) ! 35: unsigned size; ! 36: { ! 37: register char *ptr = (char *) malloc (size); ! 38: if (ptr != 0) return (ptr); ! 39: memory_full (); ! 40: /*NOTREACHED*/ ! 41: return 0; ! 42: } ! 43: ! 44: char * ! 45: xrealloc (old, size) ! 46: char *old; ! 47: unsigned size; ! 48: { ! 49: register char *ptr = (char *) realloc (old, size); ! 50: if (ptr == 0) ! 51: memory_full (); ! 52: return ptr; ! 53: } ! 54: ! 55: char * ! 56: xcalloc (number, size) ! 57: unsigned number, size; ! 58: { ! 59: register unsigned total = number * size; ! 60: register char *ptr = (char *) calloc (number, size); ! 61: if (ptr == 0) ! 62: memory_full (); ! 63: return ptr; ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.