From 12ac81382ed0fa41bf8d4dbed02e52e68670ee04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= Date: Tue, 16 Aug 2022 13:44:22 +0200 Subject: [PATCH] Use g_strdup_vprintf() instead of manually calculating allocation space Fixes an error introduced in d2508e206514bdbf841ee72f4971336766c16fe1 by removing trailing NULLs, on which the size calculation code was relying. Instead of this incosistent argument iteration, use g_strdup_vprintf(), which allocates the new string correctly. --- librepo/metadata_downloader.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/librepo/metadata_downloader.c b/librepo/metadata_downloader.c index 6fc44ec..a18efdd 100644 --- a/librepo/metadata_downloader.c +++ b/librepo/metadata_downloader.c @@ -97,26 +97,11 @@ void lr_metadatatarget_append_error(LrMetadataTarget *target, char *format, ...) { va_list valist; - size_t length = strlen(format); - char *error_message = NULL; - - va_start(valist, format); - while (1) { - char *arg = va_arg(valist, char*); - if (arg == NULL) - break; - - length += strlen(arg); - } - length += RESERVE; - va_end(valist); - va_start(valist, format); - error_message = malloc(length * sizeof(char)); - vsnprintf(error_message, length, format, valist); + gchar *error_message = g_strdup_vprintf(format, valist); va_end(valist); - target->err = g_list_append(target->err, (gpointer) error_message); + target->err = g_list_append(target->err, error_message); } static gboolean -- 2.27.0