metal : logging va_args memory fix
This commit is contained in:
parent
4f0e09598f
commit
1f55026cd5
1 changed files with 15 additions and 6 deletions
19
ggml-metal.m
19
ggml-metal.m
|
@ -128,11 +128,20 @@ void ggml_metal_log_set_callback(void (*log_callback)(enum llama_log_level level
|
|||
|
||||
static void ggml_metal_log(enum llama_log_level level, const char* format, ...){
|
||||
if ( ggml_metal_log_callback != NULL ) {
|
||||
va_list arg;
|
||||
va_start(arg, format);
|
||||
char const* text = va_arg(arg, char const*);
|
||||
ggml_metal_log_callback(level, text, ggml_metal_log_user_data);
|
||||
va_end(arg);
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
char buffer[128];
|
||||
int len = vsnprintf(buffer, 128, format, args);
|
||||
if (len < 128) {
|
||||
ggml_metal_log_callback(level, buffer, ggml_metal_log_user_data);
|
||||
} else {
|
||||
char* buffer2 = malloc(len+1);
|
||||
vsnprintf(buffer2, len+1, format, args);
|
||||
buffer2[len] = 0;
|
||||
ggml_metal_log_callback(level, buffer2, ggml_metal_log_user_data);
|
||||
free(buffer2);
|
||||
}
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue