Mercurial > molko
diff 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 |
line wrap: on
line diff
--- a/src/libmlk-core/core/alloc.c Wed Mar 16 13:37:56 2022 +0100 +++ b/src/libmlk-core/core/alloc.c Wed Mar 30 15:06:55 2022 +0200 @@ -24,6 +24,7 @@ #include <SDL.h> #include "alloc.h" +#include "buf.h" #include "error.h" #include "panic.h" @@ -185,6 +186,30 @@ return ret; } +char * +alloc_sdupf(const char *fmt, ...) +{ + struct buf buf = {0}; + char *ret; + va_list ap; + + va_start(ap, fmt); + buf_vprintf(&buf, fmt, ap); + va_end(ap); + + if (!buf.data) + panicf("%s", strerror(ENOMEM)); + + /* + * We need to reallocate a copy because the API expects to use + * alloc_free. + */ + ret = alloc_dup(buf.data, buf.length + 1); + buf_finish(&buf); + + return ret; +} + int alloc_pool_init(struct alloc_pool *pool, size_t elemsize, void (*finalizer)(void *)) {