The first a bug in pax and should be commited to FBSD, too.
[dragonfly.git] / contrib / libgmp / 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 <stdio.h>
23
24 #include "gmp.h"
25 #include "gmp-impl.h"
26
27 #ifdef __NeXT__
28 #define static
29 #endif
30
31 #if __STDC__
32 void *  (*_mp_allocate_func) (size_t) = _mp_default_allocate;
33 void *  (*_mp_reallocate_func) (void *, size_t, size_t)
34      = _mp_default_reallocate;
35 void    (*_mp_free_func) (void *, size_t) = _mp_default_free;
36 #else
37 void *  (*_mp_allocate_func) () = _mp_default_allocate;
38 void *  (*_mp_reallocate_func) () = _mp_default_reallocate;
39 void    (*_mp_free_func) () = _mp_default_free;
40 #endif
41
42 /* Default allocation functions.  In case of failure to allocate/reallocate
43    an error message is written to stderr and the program aborts.  */
44
45 void *
46 #if __STDC__
47 _mp_default_allocate (size_t size)
48 #else
49 _mp_default_allocate (size)
50      size_t size;
51 #endif
52 {
53   void *ret;
54
55   ret = malloc (size);
56   if (ret == 0)
57     {
58       perror ("cannot allocate in gmp");
59       abort ();
60     }
61
62   return ret;
63 }
64
65 void *
66 #if __STDC__
67 _mp_default_reallocate (void *oldptr, size_t old_size, size_t new_size)
68 #else
69 _mp_default_reallocate (oldptr, old_size, new_size)
70      void *oldptr;
71      size_t old_size;
72      size_t new_size;
73 #endif
74 {
75   void *ret;
76
77   ret = realloc (oldptr, new_size);
78   if (ret == 0)
79     {
80       perror ("cannot allocate in gmp");
81       abort ();
82     }
83
84   return ret;
85 }
86
87 void
88 #if __STDC__
89 _mp_default_free (void *blk_ptr, size_t blk_size)
90 #else
91 _mp_default_free (blk_ptr, blk_size)
92      void *blk_ptr;
93      size_t blk_size;
94 #endif
95 {
96   free (blk_ptr);
97 }