vmod: Pass xkb_desc explicitly to vmod functions
authorDaniel Stone <daniel@fooishbar.org>
Wed, 15 Feb 2012 15:58:14 +0000 (15:58 +0000)
committerDaniel Stone <daniel@fooishbar.org>
Wed, 15 Feb 2012 16:24:50 +0000 (16:24 +0000)
Some error paths don't set info->xkb correctly, so just do like most
utility functions and pass the xkb_desc explicitly.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
src/xkbcomp/compat.c
src/xkbcomp/keytypes.c
src/xkbcomp/symbols.c
src/xkbcomp/vmod.c
src/xkbcomp/vmod.h

index 8749b5b..bad5cc2 100644 (file)
@@ -515,7 +515,7 @@ SetInterpField(SymInterpInfo * si,
     {
         if (arrayNdx != NULL)
             return ReportSINotArray(si, field, info);
-        ok = ResolveVirtualModifier(value, &tmp, &info->vmods);
+        ok = ResolveVirtualModifier(value, xkb, &tmp, &info->vmods);
         if (ok)
         {
             si->interp.virtual_mod = tmp.uval;
@@ -765,7 +765,7 @@ HandleCompatMapFile(XkbFile * file,
                 info->errorCount++;
             break;
         case StmtVModDef:
-            if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+            if (!HandleVModDef((VModDef *) stmt, xkb, merge, &info->vmods))
                 info->errorCount++;
             break;
         case StmtKeycodeDef:
index d83f5c3..b19d7bd 100644 (file)
@@ -1068,7 +1068,7 @@ HandleKeyTypesFile(XkbFile * file,
                 info->errorCount++;
             break;
         case StmtVModDef: /* virtual_modifiers NumLock, ... */
-            if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+            if (!HandleVModDef((VModDef *) stmt, xkb, merge, &info->vmods))
                 info->errorCount++;
             break;
         case StmtKeyAliasDef:
index 72bd020..2de160c 100644 (file)
@@ -1683,7 +1683,7 @@ HandleSymbolsFile(XkbFile * file,
                 info->errorCount++;
             break;
         case StmtVModDef:
-            if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+            if (!HandleVModDef((VModDef *) stmt, xkb, merge, &info->vmods))
                 info->errorCount++;
             break;
         case StmtInterpDef:
index 7b0017b..82004e6 100644 (file)
@@ -79,15 +79,16 @@ ClearVModInfo(VModInfo * info, struct xkb_desc * xkb)
  * @param mergeMode Merge strategy (e.g. MergeOverride)
  */
 Bool
-HandleVModDef(VModDef * stmt, unsigned mergeMode, VModInfo * info)
+HandleVModDef(VModDef * stmt, struct xkb_desc *xkb, unsigned mergeMode,
+              VModInfo * info)
 {
     register int i, bit, nextFree;
     ExprResult mod;
     struct xkb_server_map * srv;
     struct xkb_names * names;
 
-    srv = info->xkb->server;
-    names = info->xkb->names;
+    srv = xkb->server;
+    names = xkb->names;
     for (i = 0, bit = 1, nextFree = -1; i < XkbNumVirtualMods; i++, bit <<= 1)
     {
         if (info->defined & bit)
@@ -228,11 +229,12 @@ FindKeypadVMod(struct xkb_desc * xkb)
 }
 
 Bool
-ResolveVirtualModifier(ExprDef * def, ExprResult * val_rtrn, VModInfo * info)
+ResolveVirtualModifier(ExprDef * def, struct xkb_desc *xkb,
+                       ExprResult * val_rtrn, VModInfo * info)
 {
     struct xkb_names * names;
 
-    names = info->xkb->names;
+    names = xkb->names;
     if (def->op == ExprIdent)
     {
         int i, bit;
index e8833fc..1e0bb5c 100644 (file)
@@ -45,6 +45,7 @@ extern void ClearVModInfo(VModInfo * /* info */ ,
     );
 
 extern Bool HandleVModDef(VModDef * /* stmt */ ,
+                          struct xkb_desc * /* xkb */ ,
                           unsigned /* mergeMode */ ,
                           VModInfo *    /* info */
     );
@@ -64,6 +65,7 @@ extern int FindKeypadVMod(struct xkb_desc *    /* xkb */
     );
 
 extern Bool ResolveVirtualModifier(ExprDef * /* def */ ,
+                                   struct xkb_desc * /* xkb */ ,
                                    ExprResult * /* value_rtrn */ ,
                                    VModInfo *   /* info */
     );