make fluid_log() thread safe

by using a local buffer rather than global one, intentionally breaks
the deprecated fluid_synth_error()
This commit is contained in:
derselbst 2018-10-09 18:00:19 +02:00
parent 7517c17524
commit c483ae0f95

View file

@ -169,20 +169,20 @@ fluid_default_log_function(int level, const char *message, void *data)
int int
fluid_log(int level, const char *fmt, ...) fluid_log(int level, const char *fmt, ...)
{ {
fluid_log_function_t fun = NULL;
va_list args;
va_start(args, fmt);
FLUID_VSNPRINTF(fluid_errbuf, sizeof(fluid_errbuf), fmt, args);
va_end(args);
if((level >= 0) && (level < LAST_LOG_LEVEL)) if((level >= 0) && (level < LAST_LOG_LEVEL))
{ {
fun = fluid_log_function[level]; fluid_log_function_t fun = fluid_log_function[level];
if(fun != NULL) if(fun != NULL)
{ {
(*fun)(level, fluid_errbuf, fluid_log_user_data[level]); char errbuf[1024];
va_list args;
va_start(args, fmt);
FLUID_VSNPRINTF(errbuf, sizeof(errbuf), fmt, args);
va_end(args);
(*fun)(level, errbuf, fluid_log_user_data[level]);
} }
} }