Skip to content
  • Torsten Bögershausen's avatar
    trace2: NULL is not allowed for va_list · ad006fe4
    Torsten Bögershausen authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Some compilers don't allow NULL to be passed for a va_list,
    and e.g. "gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516"
    errors out like this:
     trace2/tr2_tgt_event.c:193:18:
       error: invalid operands to binary &&
       (have ‘int’ and ‘va_list {aka __va_list}’)
        if (fmt && *fmt && ap) {
                           ^^
    I couldn't find any hints that va_list and pointers can be mixed,
    and no hints that they can't either. Morten Welinder comments:
    
    "C99, Section 7.15, simply says that va_list "is an object type suitable for
    holding information needed by the macros va_start, va_end, and
    va_copy". So clearly not guaranteed to be mixable with pointers...
    
    The portable solution is to use "va_list" everywhere in the callchain.
    As a consequence, both trace2_region_enter_fl() and trace2_region_leave_fl()
    now take a variable argument list.
    
    Signed-off-by: default avatarTorsten Bögershausen <tboegi@web.de>
    Acked-by: default avatarJeff Hostetler <jeffhost@microsoft.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    ad006fe4