if (value->op == ExprIdent)
{
register char *valStr;
- valStr = XkbcAtomGetString(value->value.str);
+ valStr = XkbcAtomText(value->value.str);
if (valStr && ((uStrCaseCmp(valStr, "usemodmapmods") == 0) ||
(uStrCaseCmp(valStr, "modmapmods") == 0)))
{
}
strncpy((char *) action->data, rtrn.str, 7);
}
+ free(rtrn.str);
return True;
}
else
ERROR("Cannot change defaults in an action definition\n");
ACTION("Ignoring attempt to change %s.%s\n", elemRtrn.str,
fieldRtrn.str);
+ free(elemRtrn.str);
+ free(fieldRtrn.str);
return False;
}
if (!stringToField(fieldRtrn.str, &fieldNdx))
{
ERROR("Unknown field name %s\n", uStringText(fieldRtrn.str));
+ free(elemRtrn.str);
+ free(fieldRtrn.str);
return False;
}
+ free(elemRtrn.str);
+ free(fieldRtrn.str);
if (!(*handleAction[hndlrType])
(xkb, action, fieldNdx, arrayRtrn, value))
{
else
{
if (!stringToAction(elem, &new->action))
+ {
+ free(new);
return False;
+ }
if (new->action == XkbSA_NoAction)
{
ERROR("\"%s\" is not a valid field in a NoAction action\n",
field);
+ free(new);
return False;
}
}
if (!stringToField(field, &new->field))
{
ERROR("\"%s\" is not a legal field name\n", field);
+ free(new);
return False;
}
new->array_ndx = array_ndx;
{
ExprResult elem, field;
ExprDef *ndx;
+ int ret;
if (ExprResolveLhs(stmt->name, &elem, &field, &ndx) == 0)
- return 0; /* internal error, already reported */
- if (elem.str && (uStrCaseCmp(elem.str, "interpret") == 0))
- return SetInterpField(&info->dflt, xkb, field.str, ndx, stmt->value,
+ ret = 0; /* internal error, already reported */
+ else if (elem.str && (uStrCaseCmp(elem.str, "interpret") == 0))
+ ret = SetInterpField(&info->dflt, xkb, field.str, ndx, stmt->value,
info);
- if (elem.str && (uStrCaseCmp(elem.str, "indicator") == 0))
- {
- return SetIndicatorMapField(&info->ledDflt, xkb, field.str, ndx,
- stmt->value);
- }
- return SetActionField(xkb, elem.str, field.str, ndx, stmt->value,
- &info->act);
+ else if (elem.str && (uStrCaseCmp(elem.str, "indicator") == 0))
+ ret = SetIndicatorMapField(&info->ledDflt, xkb, field.str, ndx,
+ stmt->value);
+ else
+ ret = SetActionField(xkb, elem.str, field.str, ndx, stmt->value,
+ &info->act);
+ free(elem.str);
+ free(field.str);
+ return ret;
}
static int