On Thu, 5 May 2005, Bill Paul wrote: >> On Thu, 5 May 2005, Xin LI wrote: >> >>> On Thu, May 05, 2005 at 04:44:28AM -0400, FreeBSD Tinderbox wrote: >>>> /tinderbox/CURRENT/amd64/amd64/src/sys/modules/ndis/../../compat/ndis/subr_ndis.c: In function `NdisMFreeSharedMemory': >>>> /tinderbox/CURRENT/amd64/amd64/src/sys/modules/ndis/../../compat/ndis/subr_ndis.c:1710: warning: long long unsigned int format, uint64_t arg (arg 3) >>> >>> Maybe we should make use of the PRIx64 macro? (see patch attached) >> >> No. PRI* is a bug in C99; it should never be used. Just cast the arg to >> a suitable larger type with a known format (uintmax_t here). (C99 is >> missing support for better ways; either %I as in sfio (?) or %DWIM where >> the compiler rewrites the string to match the arg would be better.) > > I think what you really meant to say was: > > "Use %jx instead of %qx." > > Am I right? No, the arg must match the format. %jx matches uintmax_t, but the arg has type uint64_t. uint64_t just happens to be the same as uintmax_t on all supported machines, so using %jx without casting the arg to match gives a latent bug. BruceReceived on Thu May 05 2005 - 14:21:21 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:34 UTC