XkbcFreeControls(struct xkb_desc * xkb, unsigned which, Bool freeMap)
{
if (freeMap && xkb && xkb->ctrls) {
+ free(xkb->ctrls->per_key_repeat);
free(xkb->ctrls);
xkb->ctrls = NULL;
}
continue;
}
ok = ExprResolveLhs(def->name, &tmp, &field, &arrayNdx);
- if (ok)
+ if (ok) {
ok = SetInterpField(si, xkb, field.str, arrayNdx, def->value,
info);
+ free(field.str);
+ }
}
return ok;
}
}
val_rtrn->str = XkbcAtomGetString(expr->value.str);
if (val_rtrn->str == NULL)
- {
- static char *empty = "";
- val_rtrn->str = empty;
- }
+ val_rtrn->str = strdup("");
return True;
case ExprIdent:
if (lookup)
if (new)
{
sprintf(new, "%s%s", leftRtrn.str, rightRtrn.str);
+ free(leftRtrn.str);
+ free(rightRtrn.str);
val_rtrn->str = new;
return True;
}
+ free(leftRtrn.str);
+ free(rightRtrn.str);
}
return False;
case OpSubtract:
}
di->shape = xkb_intern_atom(tmp.str);
di->defs.defined |= _GD_Shape;
+ free(tmp.str);
return True;
}
return ReportBadField(typeName, field, ddText(di));
}
di->defs.defined |= def;
*pField.str = xkb_intern_atom(tmp.str);
+ free(tmp.str);
}
else
{
di->defs.defined |= _GD_Shape;
di->shape = xkb_intern_atom(tmp.str);
}
+ free(tmp.str);
return True;
}
return ReportBadField("indicator doodad", field, ddText(di));
return ReportBadType(typeName, field, ddText(di), "string");
}
di->shape = xkb_intern_atom(tmp.str);
+ free(tmp.str);
di->defs.defined |= _GD_Shape;
return True;
}
"string");
}
di->logoName = _XkbDupString(tmp.str);
+ free(tmp.str);
return True;
}
return ReportBadField(typeName, field, ddText(di));
{
if (!SetKeyField
(key, f.str, ndx, expr->value.binary.right, info))
+ {
+ free(elem.str);
+ free(f.str);
return False;
+ }
+ free(elem.str);
+ free(f.str);
}
else
{
ERROR("Illegal element used in a key definition\n");
ACTION("Assignment to %s.%s ignored\n", elem.str, f.str);
+ free(elem.str);
+ free(f.str);
return False;
}
}
WARN("Assignment to field of unknown element in row\n");
ACTION("No value assigned to %s.%s\n", elem.str, field.str);
}
+ free(elem.str);
+ free(field.str);
}
else if (keyDef->common.stmtType == StmtKeyDef)
{
else
{
info->errorCount += 10; /* XXX: Why 10?? */
+ ClearKeyNamesInfo(&included);
return False;
}
}
else
{
info->errorCount += 10;
+ FreeKeyTypesInfo(&included);
return False;
}
}
continue;
}
ok = ExprResolveLhs(def->name, &tmp, &field, &arrayNdx);
- if (ok)
+ if (ok) {
ok = SetKeyTypeField(type, xkb, field.str, arrayNdx, def->value,
info);
+ free(field.str);
+ }
}
return ok;
}
i++;
if (XkbcAllocClientMap(xkb, XkbKeyTypesMask, i) != Success)
{
+ FreeKeyTypesInfo(&info);
WSGO("Couldn't allocate client map\n");
return False;
}
keypadVMod = FindKeypadVMod(xkb);
if (XkbcInitCanonicalKeyTypes(xkb, missing, keypadVMod) != Success)
{
+ FreeKeyTypesInfo(&info);
WSGO("Couldn't initialize canonical key types\n");
return False;
}
else
type = next++;
DeleteLevel1MapEntries(def);
- if (!CopyDefToKeyType(xkb, type, def))
+ if (!CopyDefToKeyType(xkb, type, def)) {
+ FreeKeyTypesInfo(&info);
return False;
+ }
def = (KeyTypeInfo *) def->defs.next;
}
+ FreeKeyTypesInfo(&info);
return True;
}
+
+ FreeKeyTypesInfo(&info);
return False;
}
{
def->common.stmtType = StmtInterpDef;
def->common.next = NULL;
- def->sym = strdup(sym);
+ def->sym = sym;
def->match = match;
}
else
}
info->groupNames[tmp.uval - 1 + info->explicit_group] =
xkb_intern_atom(name.str);
+ free(name.str);
return True;
}
{
if ((def->value == NULL)
|| (def->value->op == ExprKeysymList))
- field.str = "symbols";
+ field.str = strdup("symbols");
else
- field.str = "actions";
+ field.str = strdup("actions");
arrayNdx = NULL;
}
else
if (ok)
ok = SetSymbolsField(key, xkb, field.str, arrayNdx,
def->value, info);
+ free(field.str);
}
}
return ok;
SymbolsDecl : KEY KeyName OBRACE
SymbolsBody
CBRACE SEMI
- { $$= SymbolsCreate($2,(ExprDef *)$4); }
+ { $$= SymbolsCreate($2,(ExprDef *)$4); free($2); }
;
SymbolsBody : SymbolsBody COMMA SymbolsVarDecl