xkbcomp: Don't falsely promise from ExprResolveLhs

Every user of ExprReturnLhs goes on to unconditionally dereference the
field return, which can be NULL if xkb_intern_atom fails. Return false
if this is the case, so we fail safely.

testcase: splice geometry data into interp

Signed-off-by: Daniel Stone <daniels@collabora.com>
master
Daniel Stone 2017-06-26 17:21:45 +01:00
parent 4e2ee9c3f6
commit 38e1766bc6
1 changed files with 1 additions and 1 deletions

View File

@ -42,7 +42,7 @@ ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr,
*elem_rtrn = NULL; *elem_rtrn = NULL;
*field_rtrn = xkb_atom_text(ctx, expr->ident.ident); *field_rtrn = xkb_atom_text(ctx, expr->ident.ident);
*index_rtrn = NULL; *index_rtrn = NULL;
return true; return (*field_rtrn != NULL);
case EXPR_FIELD_REF: case EXPR_FIELD_REF:
*elem_rtrn = xkb_atom_text(ctx, expr->field_ref.element); *elem_rtrn = xkb_atom_text(ctx, expr->field_ref.element);
*field_rtrn = xkb_atom_text(ctx, expr->field_ref.field); *field_rtrn = xkb_atom_text(ctx, expr->field_ref.field);