PulseAudio
4.0-186-ga89ca
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
xmalloc.h
Go to the documentation of this file.
1
#ifndef foomemoryhfoo
2
#define foomemoryhfoo
3
4
/***
5
This file is part of PulseAudio.
6
7
Copyright 2004-2006 Lennart Poettering
8
9
PulseAudio is free software; you can redistribute it and/or modify
10
it under the terms of the GNU Lesser General Public License as published
11
by the Free Software Foundation; either version 2.1 of the License,
12
or (at your option) any later version.
13
14
PulseAudio is distributed in the hope that it will be useful, but
15
WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
General Public License for more details.
18
19
You should have received a copy of the GNU Lesser General Public License
20
along with PulseAudio; if not, write to the Free Software
21
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22
USA.
23
***/
24
25
#include <sys/types.h>
26
#include <stdlib.h>
27
#include <limits.h>
28
#include <assert.h>
29
30
#include <pulse/cdecl.h>
31
#include <
pulse/gccmacro.h
>
32
#include <
pulse/version.h
>
33
38
PA_C_DECL_BEGIN
39
41
void
*
pa_xmalloc
(
size_t
l)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE
(1);
42
44
void
*
pa_xmalloc0
(
size_t
l)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE
(1);
45
47
void
*
pa_xrealloc
(
void
*ptr,
size_t
size)
PA_GCC_ALLOC_SIZE
(2);
48
50
void
pa_xfree
(
void
*p);
51
53
char
*
pa_xstrdup
(
const
char
*s)
PA_GCC_MALLOC
;
54
56
char
*
pa_xstrndup
(
const
char
*s,
size_t
l)
PA_GCC_MALLOC
;
57
59
void
*
pa_xmemdup
(
const
void
*p,
size_t
l)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE
(2);
60
62
static
void
* _pa_xnew_internal(
size_t
n,
size_t
k)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE2
(1,2);
63
64
static
inline
void
* _pa_xnew_internal(
size_t
n,
size_t
k) {
65
assert(n < INT_MAX/k);
66
return
pa_xmalloc
(n*k);
67
}
68
70
#define pa_xnew(type, n) ((type*) _pa_xnew_internal((n), sizeof(type)))
71
73
static
void
* _pa_xnew0_internal(
size_t
n,
size_t
k)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE2
(1,2);
74
75
static
inline
void
* _pa_xnew0_internal(
size_t
n,
size_t
k) {
76
assert(n < INT_MAX/k);
77
return
pa_xmalloc0
(n*k);
78
}
79
81
#define pa_xnew0(type, n) ((type*) _pa_xnew0_internal((n), sizeof(type)))
82
84
static
void
* _pa_xnewdup_internal(
const
void
*p,
size_t
n,
size_t
k)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE2
(2,3);
85
86
static
inline
void
* _pa_xnewdup_internal(
const
void
*p,
size_t
n,
size_t
k) {
87
assert(n < INT_MAX/k);
88
return
pa_xmemdup
(p, n*k);
89
}
90
92
#define pa_xnewdup(type, p, n) ((type*) _pa_xnewdup_internal((p), (n), sizeof(type)))
93
95
static
void
* _pa_xrenew_internal(
void
*p,
size_t
n,
size_t
k)
PA_GCC_MALLOC
PA_GCC_ALLOC_SIZE2
(2,3);
96
97
static
inline
void
* _pa_xrenew_internal(
void
*p,
size_t
n,
size_t
k) {
98
assert(n < INT_MAX/k);
99
return
pa_xrealloc
(p, n*k);
100
}
101
103
#define pa_xrenew(type, p, n) ((type*) _pa_xrenew_internal(p, (n), sizeof(type)))
104
105
PA_C_DECL_END
106
107
#endif
src
pulse
xmalloc.h
Generated by
1.8.4