summaryrefslogtreecommitdiff
path: root/common/execute.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/execute.c')
-rw-r--r--common/execute.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/common/execute.c b/common/execute.c
index a33cec85..aad8067d 100644
--- a/common/execute.c
+++ b/common/execute.c
@@ -75,8 +75,10 @@ int execute_statements (result, packet, lease, client_state,
#if defined (DEBUG_EXPRESSIONS)
log_debug ("exec: statements returns %d", status);
#endif
- if (!status)
+ if (!status) {
+ executable_statement_dereference (&r, MDL);
return 0;
+ }
break;
case on_statement:
@@ -147,6 +149,8 @@ int execute_statements (result, packet, lease, client_state,
on_star))) {
executable_statement_dereference
(&e, MDL);
+ executable_statement_dereference
+ (&r, MDL);
return 0;
}
executable_statement_dereference (&e, MDL);
@@ -176,8 +180,10 @@ int execute_statements (result, packet, lease, client_state,
(result, packet, lease, client_state,
in_options, out_options, scope,
rc ? r->data.ie.tc : r->data.ie.fc,
- on_star))
+ on_star)) {
+ executable_statement_dereference (&r, MDL);
return 0;
+ }
break;
case eval_statement:
@@ -298,6 +304,7 @@ int execute_statements (result, packet, lease, client_state,
#if defined (DEBUG_EXPRESSIONS)
log_debug ("exec: break");
#endif
+ executable_statement_dereference (&r, MDL);
return 1;
case supersede_option_statement: