From 34631689843eb8b96961cc7d7cc77d54cedce69a Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Mon, 9 Mar 2009 21:15:04 +0100 Subject: [PATCH] --- yaml --- r: 140503 b: refs/heads/master c: 39e874f8afbdb3745e2406ce4ecbde9ac4cbaa78 h: refs/heads/master i: 140501: d1017ad83661d175596b12e7185691415e0dc19d 140499: 4b48032453733627ef7220ad203fe90332a05122 140495: bcaeadfdf9d2c9606d79f66cf241b10c319f82e1 v: v3 --- [refs] | 2 +- trunk/lib/vsprintf.c | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index aadab45de714..c68fe2830a7f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fef20d9c1380f04ba9492d6463148db07b413708 +refs/heads/master: 39e874f8afbdb3745e2406ce4ecbde9ac4cbaa78 diff --git a/trunk/lib/vsprintf.c b/trunk/lib/vsprintf.c index 25f01578c856..dc1674377009 100644 --- a/trunk/lib/vsprintf.c +++ b/trunk/lib/vsprintf.c @@ -768,7 +768,6 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, static int format_decode(const char *fmt, struct printf_spec *spec) { const char *start = fmt; - bool sign = false; /* we finished early by reading the field width */ if (spec->type == FORMAT_TYPE_WITDH) { @@ -900,7 +899,7 @@ static int format_decode(const char *fmt, struct printf_spec *spec) case 'd': case 'i': - sign = true; + spec->flags |= SIGN; case 'u': break; @@ -912,7 +911,7 @@ static int format_decode(const char *fmt, struct printf_spec *spec) if (spec->qualifier == 'L') spec->type = FORMAT_TYPE_LONG_LONG; else if (spec->qualifier == 'l') { - if (sign) + if (spec->flags & SIGN) spec->type = FORMAT_TYPE_LONG; else spec->type = FORMAT_TYPE_ULONG; @@ -921,12 +920,12 @@ static int format_decode(const char *fmt, struct printf_spec *spec) } else if (spec->qualifier == 't') { spec->type = FORMAT_TYPE_PTRDIFF; } else if (spec->qualifier == 'h') { - if (sign) + if (spec->flags & SIGN) spec->type = FORMAT_TYPE_SHORT; else spec->type = FORMAT_TYPE_USHORT; } else { - if (sign) + if (spec->flags & SIGN) spec->type = FORMAT_TYPE_INT; else spec->type = FORMAT_TYPE_UINT; @@ -1101,8 +1100,8 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) case FORMAT_TYPE_SHORT: num = (short) va_arg(args, int); break; - case FORMAT_TYPE_UINT: - num = va_arg(args, unsigned int); + case FORMAT_TYPE_INT: + num = (int) va_arg(args, int); break; default: num = va_arg(args, unsigned int);