diff --git a/src/SDL_log.c b/src/SDL_log.c index 5b7ad6786..a4c4d5050 100644 --- a/src/SDL_log.c +++ b/src/SDL_log.c @@ -320,11 +320,12 @@ SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list /* If message truncated, allocate and re-render */ if (len >= sizeof(stack_buf)) { - message = (char *)SDL_malloc(SDL_MAX_LOG_MESSAGE); + /* Allocate exactly what we need, including the zero-terminator */ + message = (char *)SDL_malloc(len + 1); if (!message) return; va_copy(aq, ap); - len = SDL_vsnprintf(message, SDL_MAX_LOG_MESSAGE, fmt, aq); + len = SDL_vsnprintf(message, len + 1, fmt, aq); va_end(aq); } else { message = stack_buf;