From 44711e0ca2658da080e04ce7e208a78c9b20e927 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Sun, 16 Nov 2008 22:16:04 +0100 Subject: Fix some bugs in filter interpret. --- filter/filter.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'filter/filter.c') diff --git a/filter/filter.c b/filter/filter.c index bdc6f08..6288df7 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -655,7 +655,7 @@ interpret(struct f_inst *what) ONEARG; res = v1; res.type |= T_RETURN; - break; + return res; case P('c','a'): /* CALL: this is special: if T_RETURN and returning some value, mask it out */ ONEARG; res = interpret(what->a2.p); @@ -676,7 +676,10 @@ interpret(struct f_inst *what) } } /* It is actually possible to have t->data NULL */ - return interpret(t->data); + + res = interpret(t->data); + if (res.type & T_RETURN) + return res; } break; case P('i','M'): /* IP.MASK(val) */ -- cgit v1.2.3