Fix SIGSEV in SDL_error. Re-apply same pattern on this uncompiled code (see #5795)

This commit is contained in:
Sylvain 2022-06-28 13:09:38 +02:00
parent d4e6047e3c
commit f815580dde
No known key found for this signature in database
GPG Key ID: 5F87E02E5BC0939E

View File

@ -73,13 +73,17 @@ static void SDL_InitDynamicAPI(void);
_static int SDLCALL SDL_SetError##name(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) { \ _static int SDLCALL SDL_SetError##name(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) { \
char buf[128], *str = buf; \ char buf[128], *str = buf; \
int result; \ int result; \
va_list ap; initcall; va_start(ap, fmt); \ va_list ap; initcall; \
va_start(ap, fmt); \
result = jump_table.SDL_vsnprintf(buf, sizeof(buf), fmt, ap); \ result = jump_table.SDL_vsnprintf(buf, sizeof(buf), fmt, ap); \
va_end(ap); \
if (result >= 0 && (size_t)result >= sizeof(buf)) { \ if (result >= 0 && (size_t)result >= sizeof(buf)) { \
size_t len = (size_t)result + 1; \ size_t len = (size_t)result + 1; \
str = (char *)jump_table.SDL_malloc(len); \ str = (char *)jump_table.SDL_malloc(len); \
if (str) { \ if (str) { \
va_start(ap, fmt); \
result = jump_table.SDL_vsnprintf(str, len, fmt, ap); \ result = jump_table.SDL_vsnprintf(str, len, fmt, ap); \
va_end(ap); \
} \ } \
} \ } \
va_end(ap); \ va_end(ap); \