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
parent
4e2ee9c3f6
commit
38e1766bc6
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue