On Thu, 2017-10-26 at 17:27 +1100, Tobin C. Harding wrote: > Hi Joe, > > thanks for your review. > > On Wed, Oct 25, 2017 at 09:57:23PM -0700, Joe Perches wrote: > > On Thu, 2017-10-26 at 13:53 +1100, Tobin C. Harding wrote: > > > Currently pointer() checks for a NULL pointer argument and then if so > > > attempts to print "(null)" with _some_ standard width. This width cannot > > > correctly be ascertained here because many of the printk specifiers > > > print pointers of varying widths. > > > > I believe this is not a good change. > > Only pointers without a <foo> extension call pointer() > > Sorry, I don't understand what you mean here. All the %p<foo> specifier code > is > handled by pointer()?
Sorry, I was imprecise/wrong. None of the %p<foo> extensions except %pK and %p<invalid_foo> actually use this bit of the pointer() call. All of the other valid %p<foo> extension uses do not end up at this block being executed so it's effectively only regular pointers being output by number() > > > Remove the attempt to print NULL pointers with a correct width. > > > > the correct width for a %p is the default width. > > It is the default width if we are printing addresses. Once we hash 64 > bit address to a 32 bit identifier then we don't have a default width. Perhaps that 32 bit identifier should use leading 0's for the default width. aside: Why hash 64 bits to 32? Why shouldn't the hash width be 64 bits on 64 bit systems?