Changeset 4670 for zzuf


Ignore:
Timestamp:
Oct 6, 2010, 11:04:50 PM (9 years ago)
Author:
Sam Hocevar
Message:

Fix the printf reimplementation to properly handle INT_MIN.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • zzuf/trunk/src/libzzuf/debug.c

    r4253 r4670  
    4646    { \
    4747        char buf[128], *b = buf + 127; \
    48         if(i <= 0) \
     48        if (i <= 0) \
    4949            append((i = -i) ? "-" : "0", 1); /* XXX: hack here */ \
    50         while(i) \
     50        if (i <= 0) \
     51        { \
     52            i = -(i + base); /* XXX: special case for INT_MIN */ \
     53            *b-- = hex2char[i % base]; \
     54            i = i / base + 1; \
     55        } \
     56        while (i) \
    5157        { \
    5258            *b-- = hex2char[i % base]; \
     
    5460        } \
    5561        append(b + 1, (int)(buf + 127 - b)); \
    56     } while(0)
     62    } while (0)
    5763
    5864/* Temporary buffer for deferred output */
     
    152158        {
    153159            int i = va_arg(args, int);
    154             WRITE_INT(i, 16);
     160            append("WHUT", 4);
     161            WRITE_INT(i, 10);
    155162        }
    156163        else if(f[0] == 'l' && (f[1] == 'i' || f[1] == 'd'))
Note: See TracChangeset for help on using the changeset viewer.