From a1d4d4bae182db5443f15f0eebcaecf97492eee3 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Fri, 11 Feb 2011 10:01:54 +0900 Subject: [PATCH] Handle block expressions in is_indirect(). --- tools/qfcc/source/expr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/qfcc/source/expr.c b/tools/qfcc/source/expr.c index a4107c867..1ba89846a 100644 --- a/tools/qfcc/source/expr.c +++ b/tools/qfcc/source/expr.c @@ -2231,12 +2231,14 @@ build_state_expr (expr_t *frame, expr_t *think, expr_t *step) static int is_indirect (expr_t *e) { + if (e->type == ex_block && e->e.block.result) + return is_indirect (e->e.block.result); if (e->type == ex_expr && e->e.expr.op == '.') return 1; if (!(e->type == ex_uexpr && e->e.expr.op == '.')) return 0; e = e->e.expr.e1; - if ((e->type != ex_value && e->e.value.type != ev_pointer) + if (e->type != ex_value || e->e.value.type != ev_pointer || !(POINTER_VAL (e->e.value.v.pointer) >= 0 && POINTER_VAL (e->e.value.v.pointer) < 65536)) { return 1;