# HG changeset patch # User Ozkan Sezer # Date 1509275700 -10800 # Node ID 9c2efaaf0068a524f18d723055decd994992e2c9 # Parent b2fd0f264cd3777c9b6224c954d630bbcd042f8c bug #3739: handle %lu, %li and %ld in SDL_SetError. diff --git a/src/SDL_error.c b/src/SDL_error.c --- a/src/SDL_error.c +++ b/src/SDL_error.c @@ -76,6 +76,16 @@ SDL_SetError(SDL_PRINTF_FORMAT_STRING co case 0: /* Malformed format string.. */ --fmt; break; + case 'l': + switch (*fmt++) { + case 0: /* Malformed format string.. */ + --fmt; + break; + case 'i': case 'd': case 'u': + error->args[error->argc++].value_l = va_arg(ap, long); + break; + } + break; case 'c': case 'i': case 'd': @@ -219,6 +229,22 @@ SDL_GetErrorMsg(char *errstr, int maxlen && spot < (tmp + SDL_arraysize(tmp) - 2)) { *spot++ = *fmt++; } + if (*fmt == 'l') { + *spot++ = *fmt++; + *spot++ = *fmt++; + *spot++ = '\0'; + switch (spot[-2]) { + case 'i': case 'd': case 'u': + len = SDL_snprintf(msg, maxlen, tmp, + error->args[argi++].value_l); + if (len > 0) { + msg += len; + maxlen -= len; + } + break; + } + continue; + } *spot++ = *fmt++; *spot++ = '\0'; switch (spot[-2]) { diff --git a/src/SDL_error_c.h b/src/SDL_error_c.h --- a/src/SDL_error_c.h +++ b/src/SDL_error_c.h @@ -51,6 +51,7 @@ unsigned char value_c; #endif int value_i; + long value_l; double value_f; char buf[ERR_MAX_STRLEN]; } args[ERR_MAX_ARGS];