]>
code.delx.au - pulseaudio/blob - polyp/xmalloc.c
bf366347071b675588d6948598f0972475b05af7
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
36 /* Make sure not to allocate more than this much memory. */
37 #define MAX_ALLOC_SIZE (1024*1024*20) /* 20MB */
45 static void oom(void) PA_GCC_NORETURN
;
47 /** called in case of an OOM situation. Prints an error message and
49 static void oom(void) {
50 static const char e
[] = "Not enough memory\n";
51 pa_loop_write(STDERR_FILENO
, e
, sizeof(e
)-1);
58 void* pa_xmalloc(size_t size
) {
61 assert(size
< MAX_ALLOC_SIZE
);
63 if (!(p
= malloc(size
)))
69 void* pa_xmalloc0(size_t size
) {
72 assert(size
< MAX_ALLOC_SIZE
);
74 if (!(p
= calloc(1, size
)))
80 void *pa_xrealloc(void *ptr
, size_t size
) {
83 assert(size
< MAX_ALLOC_SIZE
);
85 if (!(p
= realloc(ptr
, size
)))
90 void* pa_xmemdup(const void *p
, size_t l
) {
94 char *r
= pa_xmalloc(l
);
100 char *pa_xstrdup(const char *s
) {
104 return pa_xmemdup(s
, strlen(s
)+1);
107 char *pa_xstrndup(const char *s
, size_t l
) {
112 size_t t
= strlen(s
);
117 r
= pa_xmemdup(s
, t
+1);