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 *))
 {