Hi Paul,

I noticed that verror/error call va_end twice. Once in error_tail and
then again in the calling function.

This seems to have occurred when privatizing functions in glibc a while
ago. I've pushed this patch to Gnulib.

Only a one line change, but I don't have copyright papers for glibc, so
feel free to add:

Signed-off-by: Collin Funk  <collin.fu...@gmail.com>

to keep things clean there.

Collin

>From ba9136b7646ef9e01ffad3ddcf232002354531d0 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Wed, 2 Oct 2024 19:55:26 -0700
Subject: [PATCH] error, verror: Don't call va_end twice.

* lib/error.c (error_tail): Remove va_end call.
---
 ChangeLog   | 5 +++++
 lib/error.c | 1 -
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index d3311a6ea8..72a40a6ceb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-10-02  Collin Funk  <collin.fu...@gmail.com>
+
+	error, verror: Don't call va_end twice.
+	* lib/error.c (error_tail): Remove va_end call.
+
 2024-10-02  Paul Eggert  <egg...@cs.ucla.edu>
 
 	file-has-acl: no need for struct stat
diff --git a/lib/error.c b/lib/error.c
index 837d5e56c6..6816805326 100644
--- a/lib/error.c
+++ b/lib/error.c
@@ -228,7 +228,6 @@ error_tail (int status, int errnum, const char *message, va_list args,
 #else
   vfprintf (stderr, message, args);
 #endif
-  va_end (args);
 
   ++error_message_count;
   if (errnum)
-- 
2.46.2

Reply via email to