fix: vsnprintf terminates with 0, string use not correct

This commit is contained in:
Y. Velkov 2024-05-15 13:29:50 +03:00
parent 9f8d92d690
commit 89b3236152

View file

@ -83,11 +83,11 @@ static void ggml_cuda_log(enum ggml_log_level level, const char * format, ...) {
if (len < 128) { if (len < 128) {
ggml_cuda_log_callback(level, buffer, ggml_cuda_log_user_data); ggml_cuda_log_callback(level, buffer, ggml_cuda_log_user_data);
} else { } else {
std::string buffer2(len, '\0'); std::vector<char> buffer2(len + 1); // vsnprintf adds a null terminator
va_end(args); va_end(args);
va_start(args, format); va_start(args, format);
vsnprintf(&buffer2[0], len + 1, format, args); vsnprintf(&buffer2[0], buffer2.size(), format, args);
ggml_cuda_log_callback(level, buffer2.c_str(), ggml_cuda_log_user_data); ggml_cuda_log_callback(level, buffer2.data(), ggml_cuda_log_user_data);
} }
va_end(args); va_end(args);
} }