[webkit-dev] Reminder regarding formatting uint64_t

Michael Catanzaro mcatanzaro at igalia.com
Wed Feb 27 14:35:39 PST 2019


Hi,

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.

Thanks,

Michael



More information about the webkit-dev mailing list