Skip to content

Commit f60a816

Browse files
authored
bugfix: resolve crash for va_list (#460)
Signed-off-by: Michael Pollind <mpollind@gmail.com>
1 parent 7090423 commit f60a816

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

include/nbl/system/ILogger.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,13 @@ class NBL_API ILogger : public core::IReferenceCounted
9696
return "";
9797
}
9898

99-
size_t newSize = vsnprintf(nullptr, 0, fmtString.data(), l) + 1;
100-
std::string message(newSize, '\0');
101-
vsnprintf(message.data(), newSize, fmtString.data(), l);
102-
103-
std::string out_str(timeStr.length() + messageTypeStr.length() + message.length() + 3, '\0');
99+
va_list testArgs; // copy of va_list since it is not safe to use it twice
100+
va_copy(testArgs, l);
101+
int formatSize = vsnprintf(nullptr, 0, fmtString.data(), testArgs) + 1;
102+
std::string message(formatSize, '\0');
103+
vsnprintf(message.data(), formatSize, fmtString.data(), l);
104+
105+
std::string out_str(timeStr.length() + messageTypeStr.length() + formatSize + 3, '\0');
104106
sprintf(out_str.data(), "%s%s: %s\n", timeStr.data(), messageTypeStr.data(), message.data());
105107
return out_str;
106108
return "";

0 commit comments

Comments
 (0)