mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-13 19:41:49 +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
|
: sizeof(size_t) == sizeof(long) ? TYPE_LONG
|
||||||
: TYPE_LONGLONG;
|
: TYPE_LONGLONG;
|
||||||
c = *p++;
|
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
|
// format
|
||||||
@ -831,6 +840,15 @@ bool mozilla::PrintfTarget::vprint(const char* fmt, va_list ap) {
|
|||||||
: sizeof(size_t) == sizeof(long) ? TYPE_LONG
|
: sizeof(size_t) == sizeof(long) ? TYPE_LONG
|
||||||
: TYPE_LONGLONG;
|
: TYPE_LONGLONG;
|
||||||
c = *fmt++;
|
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
|
// format
|
||||||
|
@ -132,7 +132,7 @@ static void TestPrintfFormats() {
|
|||||||
MOZ_RELEASE_ASSERT(print_one("", "%.*lld", 0, 0ll));
|
MOZ_RELEASE_ASSERT(print_one("", "%.*lld", 0, 0ll));
|
||||||
MOZ_RELEASE_ASSERT(print_one("0xF0F0", "0x%llX", 0xf0f0ull));
|
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", "%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", "he%so", "ll"));
|
||||||
MOZ_RELEASE_ASSERT(print_one("hello ", "%-8s", "hello"));
|
MOZ_RELEASE_ASSERT(print_one("hello ", "%-8s", "hello"));
|
||||||
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