]> git.sesse.net Git - vlc/commitdiff
keys: fix signed overflow
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 20 Aug 2014 18:19:52 +0000 (21:19 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 20 Aug 2014 18:19:52 +0000 (21:19 +0300)
modules/video_output/xcb/keysym.c
src/config/keys.c

index f95416d2331209dbc2753f3c5b610850bdf0cf28..ad4e31c8a73a1bf748b98327b0308f3d0eed8c1d 100644 (file)
@@ -32,18 +32,19 @@ struct keysym
 {
     char xname[32];
     char uname[64];
-    int32_t xsym;
-    int32_t usym;
+    uint32_t xsym;
+    uint32_t usym;
 };
 
 static int cmpkey (const void *va, const void *vb)
 {
     const struct keysym *ka = va, *kb = vb;
 
-#if (INT_MAX < 0x7fffffff)
-# error Oups!
-#endif
-    return ka->xsym - kb->xsym;
+    if (ka->xsym > kb->xsym)
+        return +1;
+    if (ka->xsym < kb->xsym)
+        return -1;
+    return 0;
 }
 
 static void printkey (const void *node, const VISIT which, const int depth)
@@ -79,7 +80,7 @@ static int parse (FILE *in)
             abort ();
 
         int val = sscanf (line,
-                          "#define XK_%31s %"SCNi32" /*%*cU+%"SCNx32" %63[^*]",
+                          "#define XK_%31s %"SCNu32" /*%*cU+%"SCNx32" %63[^*]",
                           sym->xname, &sym->xsym, &sym->usym, sym->uname);
         if (val < 3)
         {
index cff9ea90a1da0553e21e1a8016cc681a63ec3e53..b247a5750bf923ecf8f730bba730ca96297218f5 100644 (file)
@@ -386,11 +386,7 @@ static int keycmp (const void *a, const void *b)
 {
     const struct mapping *ka = a, *kb = b;
 
-#if (INT_MAX >= 0x7fffffff)
-    return ka->key - kb->key;
-#else
     return (ka->key < kb->key) ? -1 : (ka->key > kb->key) ? +1 : 0;
-#endif
 }
 
 struct vlc_actions