Mercurial > molko
comparison src/libmlk-core/core/alloc.c @ 402:d3fa956cdaf0
core: add alloc_sdupf
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 30 Mar 2022 15:06:55 +0200 |
parents | 460c78706989 |
children | 7321511052f6 |
comparison
equal
deleted
inserted
replaced
401:df5e1fea1d2e | 402:d3fa956cdaf0 |
---|---|
22 #include <string.h> | 22 #include <string.h> |
23 | 23 |
24 #include <SDL.h> | 24 #include <SDL.h> |
25 | 25 |
26 #include "alloc.h" | 26 #include "alloc.h" |
27 #include "buf.h" | |
27 #include "error.h" | 28 #include "error.h" |
28 #include "panic.h" | 29 #include "panic.h" |
29 | 30 |
30 static void * | 31 static void * |
31 panic_alloc(size_t size) | 32 panic_alloc(size_t size) |
183 memcpy(ret, src, length + 1); | 184 memcpy(ret, src, length + 1); |
184 | 185 |
185 return ret; | 186 return ret; |
186 } | 187 } |
187 | 188 |
189 char * | |
190 alloc_sdupf(const char *fmt, ...) | |
191 { | |
192 struct buf buf = {0}; | |
193 char *ret; | |
194 va_list ap; | |
195 | |
196 va_start(ap, fmt); | |
197 buf_vprintf(&buf, fmt, ap); | |
198 va_end(ap); | |
199 | |
200 if (!buf.data) | |
201 panicf("%s", strerror(ENOMEM)); | |
202 | |
203 /* | |
204 * We need to reallocate a copy because the API expects to use | |
205 * alloc_free. | |
206 */ | |
207 ret = alloc_dup(buf.data, buf.length + 1); | |
208 buf_finish(&buf); | |
209 | |
210 return ret; | |
211 } | |
212 | |
188 int | 213 int |
189 alloc_pool_init(struct alloc_pool *pool, size_t elemsize, void (*finalizer)(void *)) | 214 alloc_pool_init(struct alloc_pool *pool, size_t elemsize, void (*finalizer)(void *)) |
190 { | 215 { |
191 assert(pool); | 216 assert(pool); |
192 assert(elemsize != 0); | 217 assert(elemsize != 0); |