Rémi Bernon (@rbernon) commented about tools/widl/typetree.c:
if (attr->type == ATTR_ACTIVATABLE || attr->type == ATTR_COMPOSABLE) { const expr_t *value = attr->u.pval;
if (value->type == EXPR_MEMBER)
if (value->type == EXPR_MEMBER && value->u.var->declspec.type->details.iface)
You should check that the type is TYPE_INTERFACE instead of checking details.iface, it is UB to access an union member that wasn't the one written to.