]> Skullheadx's Git Forge - dmenu.git/commitdiff
util.c: output function might override errno and thus affect perror()
authorHiltjo Posthuma <hiltjo@codemadness.org>
Sun, 27 Oct 2024 19:08:46 +0000 (20:08 +0100)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sun, 27 Oct 2024 19:08:46 +0000 (20:08 +0100)
Original patch by Raymond Cole with some modifications, thanks!

util.c

diff --git a/util.c b/util.c
index 96b82c980c4ce304d329fc60e582379ab0400993..8e26a51bd3a3b526d351c314a4916a2e64759a0e 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1,4 +1,5 @@
 /* See LICENSE file for copyright and license details. */
+#include <errno.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -10,17 +11,17 @@ void
 die(const char *fmt, ...)
 {
        va_list ap;
+       int saved_errno;
+
+       saved_errno = errno;
 
        va_start(ap, fmt);
        vfprintf(stderr, fmt, ap);
        va_end(ap);
 
-       if (fmt[0] && fmt[strlen(fmt)-1] == ':') {
-               fputc(' ', stderr);
-               perror(NULL);
-       } else {
-               fputc('\n', stderr);
-       }
+       if (fmt[0] && fmt[strlen(fmt)-1] == ':')
+               fprintf(stderr, " %s", strerror(saved_errno));
+       fputc('\n', stderr);
 
        exit(1);
 }