Staffan, I think the change looks good.
/R On Apr 17, 2012, at 11:38 AM, Staffan Larsen wrote: > David, > > You are right, thanks for catching this. The correct format specifier is %zu > for a size_t. I've created a new bug 7162063 for this change since I had > already submitted the incorrect change. > > Please review the diff below. > > Thanks, > /Staffan > > > --- a/agent/src/os/linux/ps_core.c > +++ b/agent/src/os/linux/ps_core.c > @@ -440,7 +440,7 @@ > int j = 0; > print_debug("---- sorted virtual address map ----\n"); > for (j = 0; j < ph->core->num_maps; j++) { > - print_debug("base = 0x%lx\tsize = %zd\n", > ph->core->map_array[j]->vaddr, > + print_debug("base = 0x%lx\tsize = %zu\n", > ph->core->map_array[j]->vaddr, > ph->core->map_array[j]->memsz); > } > } > > On 16 apr 2012, at 07:08, David Holmes wrote: > >> On 5/04/2012 10:25 PM, Staffan Larsen wrote: >>> Please review the following one-character fix to a printf format string. A >>> 'z' is added to the printout of a size_t field. >> >> Sorry I'm late to the party and this code already shipped. The z length >> modifier is not linux specific but was added as part of the C99 standard. Is >> it also a gcc extension enabled by default (I don't think we run in C99 mode >> by default) ? >> >> But z simply changes the following d/i/o/u/x/X to indicate it refers to a >> size_t - which is somewhat confusing as size_t is unsigned, so does %zd >> print a signed or unsigned representation? If signed then the bug still >> exists for really large numbers. >> >> Note the same bug exists in the BSD version of the code. >> >> I agree with Dan that the reference to "unsigned long" in the synopsis is >> very confusing - please change the synopsis to reflect the actual problem >> e.g: "debug print should format size_t correctly". >> >> Thanks, >> David >> >>> Thanks, >>> /Staffan >>> >>> >>> diff --git a/agent/src/os/linux/ps_core.c b/agent/src/os/linux/ps_core.c >>> --- a/agent/src/os/linux/ps_core.c >>> +++ b/agent/src/os/linux/ps_core.c >>> @@ -440,7 +440,7 @@ >>> int j = 0; >>> print_debug("---- sorted virtual address map ----\n"); >>> for (j = 0; j< ph->core->num_maps; j++) { >>> - print_debug("base = 0x%lx\tsize = %d\n", >>> ph->core->map_array[j]->vaddr, >>> + print_debug("base = 0x%lx\tsize = %zd\n", >>> ph->core->map_array[j]->vaddr, >>> ph->core->map_array[j]->memsz); >>> } >>> } >