From fddd93edbdbf8c5afbfdb3c01d82e082a8a82d1a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 5 Feb 2026 13:36:27 +0100 Subject: libbb: introduce and use xasprintf_inplace() function old new delta xasprintf_and_free - 49 +49 watch_main 269 282 +13 singlemount 1313 1315 +2 append_mount_options 157 149 -8 ip_port_str 122 112 -10 lsblk_main 869 858 -11 add_cmd 1178 1167 -11 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/4 up/down: 64/-40) Total: 24 bytes Signed-off-by: Denys Vlasenko --- libbb/xfuncs_printf.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libbb/xfuncs_printf.c') diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 5d26e2bfa..ed10084b3 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -349,6 +349,22 @@ char* FAST_FUNC xasprintf(const char *format, ...) return string_ptr; } +char* FAST_FUNC xasprintf_and_free(char *allocated, const char *format, ...) +{ + va_list p; + int r; + char *string_ptr; + + va_start(p, format); + r = vasprintf(&string_ptr, format, p); + va_end(p); + + if (r < 0) + bb_die_memory_exhausted(); + free(allocated); + return string_ptr; +} + void FAST_FUNC xsetenv(const char *key, const char *value) { if (setenv(key, value, 1)) -- cgit v1.2.3-55-g6feb