From: Ondrej Zajicek Date: Sun, 16 Nov 2008 21:16:04 +0000 (+0100) Subject: Fix some bugs in filter interpret. X-Git-Tag: v1.2.0~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44711e0ca2658da080e04ce7e208a78c9b20e927;p=thirdparty%2Fbird.git Fix some bugs in filter interpret. --- diff --git a/filter/filter.c b/filter/filter.c index bdc6f0885..6288df7fb 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) */