1 /*@ FIXME please replace these damn allocators; especially for POD data!
2 * Copyright (c) 2014 - 2015 Steffen (Daode) Nurpmeso <sdaoden@users.sf.net>.
4 * Copyright (C) 1989 - 1992, 2001, 2003, 2004
5 * Free Software Foundation, Inc.
6 * Written by James Clark (jjc@jclark.com)
8 * This is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License as published by the Free
10 * Software Foundation; either version 2, or (at your option) any later
13 * This is distributed in the hope that it will be useful, but WITHOUT ANY
14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 * You should have received a copy of the GNU General Public License along
19 * with groff; see the file COPYING. If not, write to the Free Software
20 * Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
32 extern "C" const char *program_name
; // FIXME
34 static void ewrite(const char *s
)
36 write(2, s
, strlen(s
));
39 void *operator new(size_t size
)
41 // Avoid relying on the behaviour of malloc(0).
45 char *p
= (char *)malloc(unsigned(size
+ 8));
46 #else /* not COOKIE_BUG */
47 char *p
= (char *)malloc(unsigned(size
));
48 #endif /* not COOKIE_BUG */
54 ewrite("out of memory\n");
58 ((unsigned *)p
)[1] = 0;
60 #else /* not COOKIE_BUG */
62 #endif /* not COOKIE_BUG */
65 void operator delete(void *p
)
69 free((void *)((char *)p
- 8));
73 #endif /* COOKIE_BUG */