1
0
mirror of https://github.com/google/cpu_features.git synced 2025-04-27 15:12:30 +02:00

Fix allocator bump in printf string allocation

Fixes #373.
This commit is contained in:
Guillaume Chatelet 2024-12-10 10:32:52 +00:00
parent 744e4511cb
commit 3a989ba186

View File

@ -148,7 +148,11 @@ static Node* CreatePrintfString(const char* format, ...) {
const int written = vsnprintf(ptr, gBumpAllocator.size, format, arglist); const int written = vsnprintf(ptr, gBumpAllocator.size, format, arglist);
va_end(arglist); va_end(arglist);
if (written < 0 || written >= (int)gBumpAllocator.size) internal_error(); if (written < 0 || written >= (int)gBumpAllocator.size) internal_error();
return CreateConstantString((char*)BA_Bump(written)); // `vsnprintf` does not set `\0` when no characters are to be written.
if (written == 0) *ptr = '\0';
// `vsnprintf` returns the number of printed characters excluding `\0`.
const int null_terminated_written = written + 1;
return CreateConstantString((char*)BA_Bump(null_terminated_written));
} }
// Adds a string node. // Adds a string node.