From 3054c0dc504d602623484e685b84de95a761d9f9 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 6 Jul 2023 08:04:20 -0700
Subject: [PATCH] Fixed %p formatting when there is following text
(cherry picked from commit f4bd17deeeca6957d92979cf07fa436c249a9eda)
---
src/stdlib/SDL_string.c | 4 +---
test/testautomation_stdlib.c | 6 ++++++
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c
index a5efb3795630..8e270d2ab2a9 100644
--- a/src/stdlib/SDL_string.c
+++ b/src/stdlib/SDL_string.c
@@ -1810,6 +1810,7 @@ int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *f
case 'p':
info.force_case = SDL_CASE_LOWER;
length += SDL_PrintPointer(TEXT_AND_LEN_ARGS, &info, va_arg(ap, void *));
+ done = SDL_TRUE;
break;
case 'x':
info.force_case = SDL_CASE_LOWER;
@@ -1821,9 +1822,6 @@ int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *f
if (info.radix == 10) {
info.radix = 16;
}
- if (*fmt == 'p') {
- inttype = DO_LONG;
- }
SDL_FALLTHROUGH;
case 'o':
if (info.radix == 10) {
diff --git a/test/testautomation_stdlib.c b/test/testautomation_stdlib.c
index 43a235d32e01..af014b7c2c51 100644
--- a/test/testautomation_stdlib.c
+++ b/test/testautomation_stdlib.c
@@ -181,6 +181,12 @@ int stdlib_snprintf(void *arg)
SDLTest_AssertCheck(SDL_strcmp(text, expected) == 0, "Check text, expected: '%s', got: '%s'", expected, text);
SDLTest_AssertCheck(result == SDL_strlen(expected), "Check result value, expected: %d, got: %d", (int)SDL_strlen(expected), result);
+ result = SDL_snprintf(text, sizeof(text), "A %p B", (void *)0x1234abcd);
+ expected = "A 0x1234abcd B";
+ SDLTest_AssertPass("Call to SDL_snprintf(text, sizeof(text), \"A %%p B\", 0x1234abcd)");
+ SDLTest_AssertCheck(SDL_strcmp(text, expected) == 0, "Check text, expected: '%s', got: '%s'", expected, text);
+ SDLTest_AssertCheck(result == SDL_strlen(expected), "Check result value, expected: %d, got: %d", (int)SDL_strlen(expected), result);
+
return TEST_COMPLETED;
}