Add diclaimer of copyright to _osname() manual page.
[unix-history] / gnu / usr.bin / gcc1 / gnulib / g++ / builtin_New.c
CommitLineData
15637ed4
RG
1typedef void (*vfp)();
2
3static void
4default_new_handler ();
5
6vfp __new_handler = default_new_handler;
7
8char *
9__builtin_vec_new (p, maxindex, size, ctor)
10 char *p;
11 int maxindex, size;
12 void (*ctor)();
13{
14 int i, nelts = maxindex + 1;
15 char *rval;
16
17 if (p == 0)
18 p = (char *)__builtin_new (nelts * size);
19
20 rval = p;
21
22 for (i = 0; i < nelts; i++)
23 {
24 (*ctor) (p);
25 p += size;
26 }
27
28 return rval;
29}
30
31vfp
32__set_new_handler (handler)
33 vfp handler;
34{
35 vfp prev_handler;
36
37 prev_handler = __new_handler;
38 if (handler == 0) handler = default_new_handler;
39 __new_handler = handler;
40 return prev_handler;
41}
42
43vfp
44set_new_handler (handler)
45 vfp handler;
46{
47 return __set_new_handler (handler);
48}
49
50static void
51default_new_handler ()
52{
53 /* don't use fprintf (stderr, ...) because it may need to call malloc. */
54 write (2, "default_new_handler: out of memory... aaaiiiiiieeeeeeeeeeeeee!\n", 65);
55 /* don't call exit () because that may call global destructors which
56 may cause a loop. */
57 _exit (-1);
58}