mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-09 16:57:36 +00:00
Bug 1598533 - Add support for %t modifier in PrintfTarget. r=nika,Gankra
Differential Revision: https://phabricator.services.mozilla.com/D103731
This commit is contained in:
parent
f21eb2a491
commit
34b72664d0
@ -553,6 +553,15 @@ static bool BuildArgArray(const char* fmt, va_list ap, NumArgStateVector& nas) {
|
||||
: sizeof(size_t) == sizeof(long) ? TYPE_LONG
|
||||
: TYPE_LONGLONG;
|
||||
c = *p++;
|
||||
} else if (c == 't') {
|
||||
static_assert(sizeof(ptrdiff_t) == sizeof(int) ||
|
||||
sizeof(ptrdiff_t) == sizeof(long) ||
|
||||
sizeof(ptrdiff_t) == sizeof(long long),
|
||||
"ptrdiff_t is not one of the expected sizes");
|
||||
nas[cn].type = sizeof(ptrdiff_t) == sizeof(int) ? TYPE_INTN
|
||||
: sizeof(ptrdiff_t) == sizeof(long) ? TYPE_LONG
|
||||
: TYPE_LONGLONG;
|
||||
c = *p++;
|
||||
}
|
||||
|
||||
// format
|
||||
@ -831,6 +840,15 @@ bool mozilla::PrintfTarget::vprint(const char* fmt, va_list ap) {
|
||||
: sizeof(size_t) == sizeof(long) ? TYPE_LONG
|
||||
: TYPE_LONGLONG;
|
||||
c = *fmt++;
|
||||
} else if (c == 't') {
|
||||
static_assert(sizeof(ptrdiff_t) == sizeof(int) ||
|
||||
sizeof(ptrdiff_t) == sizeof(long) ||
|
||||
sizeof(ptrdiff_t) == sizeof(long long),
|
||||
"ptrdiff_t is not one of the expected sizes");
|
||||
type = sizeof(ptrdiff_t) == sizeof(int) ? TYPE_INTN
|
||||
: sizeof(ptrdiff_t) == sizeof(long) ? TYPE_LONG
|
||||
: TYPE_LONGLONG;
|
||||
c = *fmt++;
|
||||
}
|
||||
|
||||
// format
|
||||
|
@ -132,7 +132,7 @@ static void TestPrintfFormats() {
|
||||
MOZ_RELEASE_ASSERT(print_one("", "%.*lld", 0, 0ll));
|
||||
MOZ_RELEASE_ASSERT(print_one("0xF0F0", "0x%llX", 0xf0f0ull));
|
||||
MOZ_RELEASE_ASSERT(print_one("27270", "%zu", (size_t)27270));
|
||||
MOZ_RELEASE_ASSERT(print_one("27270", "%zu", (size_t)27270));
|
||||
MOZ_RELEASE_ASSERT(print_one("27270", "%tu", (ptrdiff_t)27270));
|
||||
MOZ_RELEASE_ASSERT(print_one("hello", "he%so", "ll"));
|
||||
MOZ_RELEASE_ASSERT(print_one("hello ", "%-8s", "hello"));
|
||||
MOZ_RELEASE_ASSERT(print_one(" hello", "%8s", "hello"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user