diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c
index 4289dac5f5120aaa723f26e547e1bcd30fa38612..7d6ec0788f95655867f804d385223c6a1b3ddb7e 100644
--- a/src/lib-sieve/sieve-interpreter.c
+++ b/src/lib-sieve/sieve-interpreter.c
@@ -220,26 +220,29 @@ struct sieve_interpreter *sieve_interpreter_create_for_block
 			ehandler, flags);
 }
 
-void sieve_interpreter_free(struct sieve_interpreter **interp)
+void sieve_interpreter_free(struct sieve_interpreter **_interp)
 {
+	struct sieve_interpreter *interp = *_interp;
+	struct sieve_runtime_env *renv = &interp->runenv;
 	const struct sieve_interpreter_extension_reg *eregs;
 	unsigned int ext_count, i;
 
-	sieve_runtime_trace_end(&((*interp)->runenv));
+	interp->trace.indent = 0;
+	sieve_runtime_trace_end(renv);
 
 	/* Signal registered extensions that the interpreter is being destroyed */
-	eregs = array_get(&(*interp)->extensions, &ext_count);
+	eregs = array_get(&interp->extensions, &ext_count);
 	for ( i = 0; i < ext_count; i++ ) {
 		if ( eregs[i].intext != NULL && eregs[i].intext->free != NULL )
-			eregs[i].intext->free(eregs[i].ext, *interp, eregs[i].context);
+			eregs[i].intext->free(eregs[i].ext, interp, eregs[i].context);
 	}
 
-	sieve_binary_debug_reader_deinit(&(*interp)->dreader);
-	sieve_binary_unref(&(*interp)->runenv.sbin);
-	sieve_error_handler_unref(&(*interp)->runenv.ehandler);
+	sieve_binary_debug_reader_deinit(&interp->dreader);
+	sieve_binary_unref(&renv->sbin);
+	sieve_error_handler_unref(&renv->ehandler);
 
-	pool_unref(&((*interp)->pool));
-	*interp = NULL;
+	pool_unref(&interp->pool);
+	*_interp = NULL;
 }
 
 /*
diff --git a/src/lib-sieve/sieve-interpreter.h b/src/lib-sieve/sieve-interpreter.h
index aa2e82af86fc4a170e739d5f4cd87ab1898dcda6..62fb9a8145e58c8b556a83ef50831b71cfcdd75e 100644
--- a/src/lib-sieve/sieve-interpreter.h
+++ b/src/lib-sieve/sieve-interpreter.h
@@ -25,7 +25,7 @@ struct sieve_interpreter *sieve_interpreter_create_for_block
 		const struct sieve_message_data *msgdata,
 		const struct sieve_script_env *senv, struct sieve_error_handler *ehandler,
 		enum sieve_runtime_flags flags);
-void sieve_interpreter_free(struct sieve_interpreter **interp);
+void sieve_interpreter_free(struct sieve_interpreter **_interp);
 
 /*
  * Accessors