For the past several years, I've been regularly fixing -Wformat warnings that look like this:

../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:3148:46: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 6 has type ‘uint64_t’ {aka ‘long unsigned int’} [-Wformat=] RELEASE_LOG_ERROR(ProcessSuspension, "%p - WebPage (PageID=%llu) - LayerTreeFreezeReason::ProcessSuspended was set when removing LayerTreeFreezeReason::PageTransition; current reasons are %d", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            this, m_pageID, m_LayerTreeFreezeReasons.toRaw());

Problem is that uint64_t is long long unsigned int on Mac, but only long unsigned int on Linux. It can't be printed with %llu, so please use PRIu64 instead. E.g.:

LOG("%llu", pageID); // wrong
LOG("%" PRIu64, pageID); // correct

This is good to keep in mind for any sized integer types, but uint64_t in particular since this is what causes problems for us in practice.



webkit-dev mailing list

Reply via email to