3 Ben Kibbey <bjk@luxsci.net>
5 This file is part of libpwmd.
7 Libpwmd is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 2 of the License, or
10 (at your option) any later version.
12 Libpwmd is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with libpwmd. If not, see <http://www.gnu.org/licenses/>.
33 _xrealloc_gpgrt (void *p
, size_t n
)
44 return _xrealloc (p
, n
);
64 m
= (struct memchunk_s
*)((void *)ptr
-(offsetof (struct memchunk_s
, data
)));
65 p
= (void *)m
+(offsetof (struct memchunk_s
, data
));
66 wipememory (p
, 0, m
->size
);
71 _xmalloc (size_t size
)
78 m
= malloc (sizeof (struct memchunk_s
)+size
);
83 return (void *)m
+(offsetof (struct memchunk_s
, data
));
87 _xcalloc (size_t nmemb
, size_t size
)
92 m
= malloc (sizeof (struct memchunk_s
)+(nmemb
*size
));
97 p
= (void *)m
+(offsetof (struct memchunk_s
, data
));
98 memset (p
, 0, m
->size
);
103 _xrealloc (void *ptr
, size_t size
)
106 struct memchunk_s
*m
, *mp
;
111 m
= (struct memchunk_s
*)((void *)ptr
-(offsetof (struct memchunk_s
, data
)));
112 p
= (void *)m
+(offsetof (struct memchunk_s
, data
));
113 wipememory (p
, 0, m
->size
);
118 return _xmalloc (size
);
120 m
= malloc (sizeof (struct memchunk_s
)+size
);
125 np
= (void *)m
+(offsetof (struct memchunk_s
, data
));
127 mp
= (struct memchunk_s
*)((void *)ptr
-(offsetof (struct memchunk_s
, data
)));
128 p
= (void *)mp
+(offsetof (struct memchunk_s
, data
));
130 n
= size
> mp
->size
? mp
->size
: size
;
132 wipememory (p
, 0, mp
->size
);
135 return (void *)m
+(offsetof (struct memchunk_s
, data
));