|
@@ -1662,6 +1662,20 @@ static size_t SDL_PrintFloat(char *text, size_t maxlen, SDL_FormatInfo *info, do
|
|
|
return length;
|
|
|
}
|
|
|
|
|
|
+static size_t SDL_PrintPointer(char *text, size_t maxlen, SDL_FormatInfo *info, const void *value)
|
|
|
+{
|
|
|
+ char num[130];
|
|
|
+ size_t length;
|
|
|
+
|
|
|
+ if (!value) {
|
|
|
+ return SDL_PrintString(text, maxlen, info, NULL);
|
|
|
+ }
|
|
|
+
|
|
|
+ SDL_ulltoa((unsigned long long)(uintptr_t)value, num, 16);
|
|
|
+ length = SDL_PrintString(text, maxlen, info, "0x");
|
|
|
+ return length + SDL_PrintString(TEXT_AND_LEN_ARGS, info, num);
|
|
|
+}
|
|
|
+
|
|
|
/* NOLINTNEXTLINE(readability-non-const-parameter) */
|
|
|
int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap)
|
|
|
{
|
|
@@ -1794,6 +1808,9 @@ int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *f
|
|
|
done = SDL_TRUE;
|
|
|
break;
|
|
|
case 'p':
|
|
|
+ info.force_case = SDL_CASE_LOWER;
|
|
|
+ length += SDL_PrintPointer(TEXT_AND_LEN_ARGS, &info, va_arg(ap, void *));
|
|
|
+ break;
|
|
|
case 'x':
|
|
|
info.force_case = SDL_CASE_LOWER;
|
|
|
SDL_FALLTHROUGH;
|