Wed Dec 10 23:32:47 2003 Ben Pfaff <blp@gnu.org>
[pspp] / lib / gmp / memory.c
1 /* Memory allocation routines.
2
3 Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
4
5 This file is part of the GNU MP Library.
6
7 The GNU MP Library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU Library General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or (at your
10 option) any later version.
11
12 The GNU MP Library is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
15 License for more details.
16
17 You should have received a copy of the GNU Library General Public License
18 along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20 MA 02111-1307, USA. */
21
22 #include <config.h>
23 #include <stdio.h>
24
25 #include "gmp.h"
26 #include "gmp-impl.h"
27
28 #ifdef __NeXT__
29 #define static
30 #endif
31
32 #if __STDC__
33 void *  (*_mp_allocate_func) (size_t) = _mp_default_allocate;
34 void *  (*_mp_reallocate_func) (void *, size_t, size_t)
35      = _mp_default_reallocate;
36 void    (*_mp_free_func) (void *, size_t) = _mp_default_free;
37 #else
38 void *  (*_mp_allocate_func) () = _mp_default_allocate;
39 void *  (*_mp_reallocate_func) () = _mp_default_reallocate;
40 void    (*_mp_free_func) () = _mp_default_free;
41 #endif
42
43 /* Default allocation functions.  In case of failure to allocate/reallocate
44    an error message is written to stderr and the program aborts.  */
45
46 void *
47 #if __STDC__
48 _mp_default_allocate (size_t size)
49 #else
50 _mp_default_allocate (size)
51      size_t size;
52 #endif
53 {
54   void *ret;
55
56   ret = malloc (size);
57   if (ret == 0)
58     {
59       perror ("cannot allocate in gmp");
60       abort ();
61     }
62
63   return ret;
64 }
65
66 void *
67 #if __STDC__
68 _mp_default_reallocate (void *oldptr, unused size_t old_size, size_t new_size)
69 #else
70 _mp_default_reallocate (oldptr, old_size, new_size)
71      void *oldptr;
72      size_t old_size;
73      size_t new_size;
74 #endif
75 {
76   void *ret;
77
78   ret = realloc (oldptr, new_size);
79   if (ret == 0)
80     {
81       perror ("cannot allocate in gmp");
82       abort ();
83     }
84
85   return ret;
86 }
87
88 void
89 #if __STDC__
90 _mp_default_free (void *blk_ptr, unused size_t blk_size)
91 #else
92 _mp_default_free (blk_ptr, blk_size)
93      void *blk_ptr;
94      size_t blk_size;
95 #endif
96 {
97   free (blk_ptr);
98 }