diff --git a/AK/Format.h b/AK/Format.h index b11139ae36..295dc8a1f7 100644 --- a/AK/Format.h +++ b/AK/Format.h @@ -284,6 +284,9 @@ template struct Formatter : StandardFormatter { void format(TypeErasedFormatParams& params, FormatBuilder& builder, T* value) { + if (m_mode == Mode::Default) + m_mode = Mode::Pointer; + Formatter formatter { *this }; formatter.format(params, builder, reinterpret_cast(value)); } diff --git a/AK/Tests/TestFormat.cpp b/AK/Tests/TestFormat.cpp index 8e29659bef..0e7e9aae6a 100644 --- a/AK/Tests/TestFormat.cpp +++ b/AK/Tests/TestFormat.cpp @@ -156,9 +156,11 @@ TEST_CASE(pointers) if (sizeof(void*) == 4) { EXPECT_EQ(String::formatted("{:p}", 32), "0x00000020"); EXPECT_EQ(String::formatted("{:p}", ptr), "0x00004000"); + EXPECT_EQ(String::formatted("{}", ptr), "0x00004000"); } else if (sizeof(void*) == 8) { EXPECT_EQ(String::formatted("{:p}", 32), "0x0000000000000020"); EXPECT_EQ(String::formatted("{:p}", ptr), "0x0000000000004000"); + EXPECT_EQ(String::formatted("{}", ptr), "0x0000000000004000"); } else { ASSERT_NOT_REACHED(); }