]>
code.delx.au - pulseaudio/blob - polyp/xmalloc.c
4 This file is part of polypaudio.
6 polypaudio is free software; you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published
8 by the Free Software Foundation; either version 2 of the License,
9 or (at your option) any later version.
11 polypaudio is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with polypaudio; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
34 /* Make sure not to allocate more than this much memory. */
35 #define MAX_ALLOC_SIZE (1024*1024*20) /* 20MB */
43 /** called in case of an OOM situation. Prints an error message and
45 static void oom(void) {
46 static const char e
[] = "Not enough memory\n";
47 pa_loop_write(STDERR_FILENO
, e
, sizeof(e
)-1);
52 void* pa_xmalloc(size_t size
) {
55 assert(size
< MAX_ALLOC_SIZE
);
57 if (!(p
= malloc(size
)))
63 void* pa_xmalloc0(size_t size
) {
66 assert(size
< MAX_ALLOC_SIZE
);
68 if (!(p
= calloc(1, size
)))
74 void *pa_xrealloc(void *ptr
, size_t size
) {
77 assert(size
< MAX_ALLOC_SIZE
);
79 if (!(p
= realloc(ptr
, size
)))
84 void* pa_xmemdup(const void *p
, size_t l
) {
88 char *r
= pa_xmalloc(l
);
94 char *pa_xstrdup(const char *s
) {
98 return pa_xmemdup(s
, strlen(s
)+1);
101 char *pa_xstrndup(const char *s
, size_t l
) {
106 size_t t
= strlen(s
);
111 r
= pa_xmemdup(s
, t
+1);