Browse Source

SDL_vsnprintf: %.* and %* now parse precision and width. (bug #4263.)

Ozkan Sezer 6 years ago
parent
commit
d0e9a36460
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/stdlib/SDL_string.c

+ 7 - 0
src/stdlib/SDL_string.c

@@ -1593,11 +1593,18 @@ SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt,
             if (*fmt >= '0' && *fmt <= '9') {
                 info.width = SDL_strtol(fmt, (char **)&fmt, 0);
             }
+            else if (*fmt == '*') {
+                ++fmt;
+                info.width = va_arg(ap, int);
+            }
 
             if (*fmt == '.') {
                 ++fmt;
                 if (*fmt >= '0' && *fmt <= '9') {
                     info.precision = SDL_strtol(fmt, (char **)&fmt, 0);
+                } else if (*fmt == '*') {
+                    ++fmt;
+                    info.precision = va_arg(ap, int);
                 } else {
                     info.precision = 0;
                 }