close_scope() gets called from the object destructors;
imbalance can cause us to hit assert().
Before:
nft: parser_bison.y:88: close_scope: Assertion `state->scope > 0' failed.
After:
assertion3:4:7-7: Error: too many levels of nesting jump {
assertion3:5:8-8: Error: too many levels of nesting jump
assertion3:5:9-9: Error: syntax error, unexpected newline, expecting '{'
assertion3:7:1-1: Error: syntax error, unexpected end of file
Signed-off-by: Florian Westphal <fw@strlen.de>
static void close_scope(struct parser_state *state)
{
- if (state->scope_err) {
+ if (state->scope_err || state->scope == 0) {
state->scope_err = false;
return;
}
- assert(state->scope > 0);
state->scope--;
}
--- /dev/null
+table t {
+ chain c {
+ jump{
+ jump {
+ jump
+