]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/kern/misc.c (grub_vsnprintf_real): Unify int and wchar
authorVladimir Serbinenko <phcoder@gmail.com>
Sun, 27 Oct 2013 13:47:04 +0000 (14:47 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Sun, 27 Oct 2013 13:47:04 +0000 (14:47 +0100)
handling.

ChangeLog
grub-core/kern/misc.c

index d9a362b6bfb51b2b1b25f2ee28d30d0721771d4c..7ce7c3a0c2d8db686e06f4889a9c9fd05f708624 100644 (file)
--- a/ChangeLog
+++ b/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.
index bff44ff086f2e08811370329e08a12800c2174bb..d8de0bb0972d7321f9e11ac8081e4ce4c8ea5f5a 100644 (file)
@@ -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;