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