logs: va_end() used too early
authorRobert Swiecki <robert@swiecki.net>
Sun, 16 Dec 2018 13:22:01 +0000 (14:22 +0100)
committerRobert Swiecki <robert@swiecki.net>
Sun, 16 Dec 2018 13:22:01 +0000 (14:22 +0100)
logs.cc

diff --git a/logs.cc b/logs.cc
index 1912d39..70eca39 100644 (file)
--- a/logs.cc
+++ b/logs.cc
@@ -122,18 +122,18 @@ void logMsg(enum llevel_t ll, const char* fn, int ln, bool perr, const char* fmt
                    .append("] ")
                    .append(fn)
                    .append("():")
-                   .append(std::to_string(ln))
-                   .append(" ");
+                   .append(std::to_string(ln));
        }
 
+       char* strp;
        va_list args;
        va_start(args, fmt);
-       char* strp;
+       int ret = vasprintf(&strp, fmt, args);
        va_end(args);
-       if (vasprintf(&strp, fmt, args) == -1) {
-               msg.append("[logs internal]: MEMORY ALLOCATION ERROR");
+       if (ret == -1) {
+               msg.append(" [logs internal]: MEMORY ALLOCATION ERROR");
        } else {
-               msg.append(strp);
+               msg.append(" ").append(strp);
                free(strp);
        }
        if (perr) {