diff --git a/src/cc65/expr.c b/src/cc65/expr.c index b05083323..0b668f402 100644 --- a/src/cc65/expr.c +++ b/src/cc65/expr.c @@ -1898,14 +1898,19 @@ void hie10 (ExprDesc* Expr) CodeMark Mark; GetCodePos (&Mark); hie10 (Expr); - /* If the expression is a literal string, release it, so it - ** won't be output as data if not used elsewhere. - */ - if (ED_IsLocLiteral (Expr)) { - ReleaseLiteral (Expr->LVal); + if (ED_IsBitField (Expr)) { + Error ("Cannot apply 'sizeof' to bit-field"); + Size = 0; + } else { + /* If the expression is a literal string, release it, so it + ** won't be output as data if not used elsewhere. + */ + if (ED_IsLocLiteral (Expr)) { + ReleaseLiteral (Expr->LVal); + } + /* Calculate the size */ + Size = CheckedSizeOf (Expr->Type); } - /* Calculate the size */ - Size = CheckedSizeOf (Expr->Type); /* Remove any generated code */ RemoveCode (&Mark); }