• F
    vsprintf: fix bug in negative value printing · 39e874f8
    Frederic Weisbecker 提交于
    Sitsofe Wheeler found and bisected that while unifying the
    vsprintf format decoding in:
    
      fef20d9c: vsprintf: unify the format decoding layer for its 3 users
    
    The sign flag has been dropped out in favour of
    precise types (ie: LONG/ULONG).
    
    But the format helper number() still needs this flag to keep track of
    the signedness unless it will consider all numbers as unsigned.
    
    Also add an explicit cast to int (for %d) while parsing with va_arg()
    to ensure the highest bit is well extended on the 64 bits number that
    hosts the value in case of negative values.
    Reported-Bisected-Tested-by: NSitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    LKML-Reference: <20090309201503.GA5010@nowhere>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    39e874f8
vsprintf.c 42.5 KB