* grub-core/kern/misc.c (grub_vsnprintf_real): Unify int and wchar
handling.
This commit is contained in:
parent
a8f15bceea
commit
04dea7e6c2
2 changed files with 13 additions and 12 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,13 +1,18 @@
|
|||
2013-10-21 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
2013-10-27 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/kern/misc.c (grub_vsnprintf_real): Unify int and wchar
|
||||
handling.
|
||||
|
||||
2013-10-27 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/kern/misc.c (grub_abort): Make static
|
||||
|
||||
2013-10-21 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
2013-10-27 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/kern/misc.c (grub_vsnprintf_real): Don't attempt to
|
||||
transform invalid unicode codepoints.
|
||||
|
||||
2013-10-21 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
2013-10-27 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/kern/misc.c (grub_vsnprintf_real): Remove needless explicit
|
||||
\0 checking.
|
||||
|
|
|
@ -705,16 +705,17 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0, va_list a
|
|||
}
|
||||
}
|
||||
|
||||
enum { INT, WCHAR, LONG, LONGLONG, POINTER } types[count_args];
|
||||
enum { INT, LONG, LONGLONG, POINTER } types[count_args];
|
||||
union
|
||||
{
|
||||
int i;
|
||||
grub_uint32_t w;
|
||||
long l;
|
||||
long long ll;
|
||||
void *p;
|
||||
} args[count_args];
|
||||
|
||||
COMPILE_TIME_ASSERT (sizeof (int) == sizeof (grub_uint32_t));
|
||||
|
||||
grub_memset (types, 0, sizeof (types));
|
||||
|
||||
fmt = fmt0;
|
||||
|
@ -786,21 +787,16 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0, va_list a
|
|||
case 's':
|
||||
types[curn] = POINTER;
|
||||
break;
|
||||
case 'C':
|
||||
case 'c':
|
||||
types[curn] = INT;
|
||||
break;
|
||||
case 'C':
|
||||
types[curn] = WCHAR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (n = 0; n < count_args; n++)
|
||||
switch (types[n])
|
||||
{
|
||||
case WCHAR:
|
||||
args[n].w = va_arg (args_in, grub_uint32_t);
|
||||
break;
|
||||
case POINTER:
|
||||
args[n].p = va_arg (args_in, void *);
|
||||
break;
|
||||
|
@ -928,7 +924,7 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0, va_list a
|
|||
|
||||
case 'C':
|
||||
{
|
||||
grub_uint32_t code = args[curn].w;
|
||||
grub_uint32_t code = args[curn].i;
|
||||
int shift;
|
||||
unsigned mask;
|
||||
|
||||
|
|
Loading…
Reference in a new issue