... until we have initializer.

Signed-off-by: Al Viro <[EMAIL PROTECTED]>
---
 evaluate.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/evaluate.c b/evaluate.c
index 60a11ff..e3b4940 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -2433,7 +2433,7 @@ out:
 static struct symbol *evaluate_cast(struct expression *expr)
 {
        struct expression *target = expr->cast_expression;
-       struct symbol *ctype = examine_symbol_type(expr->cast_type);
+       struct symbol *ctype;
        struct symbol *t1, *t2;
        int class1, class2;
        int as1, as2;
@@ -2441,9 +2441,6 @@ static struct symbol *evaluate_cast(struct expression 
*expr)
        if (!target)
                return NULL;
 
-       expr->ctype = ctype;
-       expr->cast_type = ctype;
-
        /*
         * Special case: a cast can be followed by an
         * initializer, in which case we need to pass
@@ -2458,7 +2455,7 @@ static struct symbol *evaluate_cast(struct expression 
*expr)
                struct symbol *sym = expr->cast_type;
                struct expression *addr = alloc_expression(expr->pos, 
EXPR_SYMBOL);
 
-               sym->initializer = expr->cast_expression;
+               sym->initializer = target;
                evaluate_symbol(sym);
 
                addr->ctype = &lazy_ptr_ctype;  /* Lazy eval */
@@ -2472,6 +2469,10 @@ static struct symbol *evaluate_cast(struct expression 
*expr)
                return sym;
        }
 
+       ctype = examine_symbol_type(expr->cast_type);
+       expr->ctype = ctype;
+       expr->cast_type = ctype;
+
        evaluate_expression(target);
        degenerate(target);
 
-- 
1.5.0-rc2.GIT


-
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to