aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--evaluate.c4
-rw-r--r--expand.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/evaluate.c b/evaluate.c
index 54cd5fa1..c18ae81d 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -3422,7 +3422,7 @@ static struct symbol *evaluate_symbol(struct symbol *sym)
if (sym->definition && sym->definition != sym)
return evaluate_symbol(sym->definition);
- current_fn = base_type;
+ current_fn = sym;
examine_fn_arguments(base_type);
if (!base_type->stmt && base_type->inline_stmt)
@@ -3453,7 +3453,7 @@ static struct symbol *evaluate_return_expression(struct statement *stmt)
struct symbol *fntype, *rettype;
evaluate_expression(expr);
- fntype = current_fn;
+ fntype = current_fn->ctype.base_type;
rettype = fntype->ctype.base_type;
if (!rettype || rettype == &void_ctype) {
if (expr && expr->ctype != &void_ctype)
diff --git a/expand.c b/expand.c
index e7559878..ab296c73 100644
--- a/expand.c
+++ b/expand.c
@@ -918,7 +918,7 @@ static int expand_symbol_call(struct expression *expr, int cost)
struct symbol *fn = def->ctype.base_type;
struct symbol *curr = current_fn;
- current_fn = fn;
+ current_fn = def;
evaluate_statement(expr->statement);
current_fn = curr;