aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/expression.c
diff options
authorLinus Torvalds <torvalds@penguin.transmeta.com>2003-03-25 16:32:24 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 20:59:46 -0700
commit8bb77b3c4c9829d2c195eed52889ec9bd022e8ef (patch)
tree251d86f1c34362d4178ab24dd0aa4e2be8538b2b /expression.c
parentea3907e1228b5ec9ce7e62b0861b6d4d7fb43266 (diff)
downloadsparse-dev-8bb77b3c4c9829d2c195eed52889ec9bd022e8ef.tar.gz
Fix typename parsing (incorrect ctype usage), and correct
handling of 'long' and 'long long' types. Fix cast parsing and evaluate casts.
Diffstat (limited to 'expression.c')
-rw-r--r--expression.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/expression.c b/expression.c
index f4e88a48..0ca6c19e 100644
--- a/expression.c
+++ b/expression.c
@@ -199,8 +199,10 @@ static struct token *cast_expression(struct token *token, struct expression **tr
struct token *next = token->next;
if (lookup_type(next)) {
struct expression *cast = alloc_expression(next, EXPR_CAST);
+ struct symbol *sym;
- token = typename(next, &cast->cast_type);
+ token = typename(next, &sym);
+ cast->cast_type = sym->ctype.base_type;
token = expect(token, ')', "at end of cast operator");
if (match_op(token, '{'))
return initializer(token, &cast->cast_type->ctype);