From e756f4c57ffce45a38897f0b5d08cbaffc8de0bc Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Mon, 11 Jan 2010 19:03:37 +0100 Subject: [PATCH] Fixed a few memleaks caused by previous changes in error handling. --- src/lib-sieve/plugins/enotify/cmd-notify.c | 2 ++ src/lib-sieve/sieve-result.c | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/lib-sieve/plugins/enotify/cmd-notify.c b/src/lib-sieve/plugins/enotify/cmd-notify.c index e3dca400b..13e6c768f 100644 --- a/src/lib-sieve/plugins/enotify/cmd-notify.c +++ b/src/lib-sieve/plugins/enotify/cmd-notify.c @@ -604,6 +604,8 @@ static bool act_notify_commit (aenv->ehandler, action->location, "notify action"); result = method->def->action_execute(&nenv, act); + + sieve_error_handler_unref(&nenv.ehandler); } return result; diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c index 1947ecd18..8214deb1a 100644 --- a/src/lib-sieve/sieve-result.c +++ b/src/lib-sieve/sieve-result.c @@ -144,6 +144,9 @@ void sieve_result_unref(struct sieve_result **result) if ( (*result)->ehandler != NULL ) sieve_error_handler_unref(&(*result)->ehandler); + if ( (*result)->action_env.ehandler != NULL ) + sieve_error_handler_unref(&(*result)->action_env.ehandler); + pool_unref(&(*result)->pool); *result = NULL; @@ -854,7 +857,7 @@ static const char *_get_from_address(struct mail *mail) NULL : t_strconcat(addr->mailbox, "@", addr->domain, NULL); } -static void _sieve_result_prepare_environment(struct sieve_result *result) +static void _sieve_result_prepare_execution(struct sieve_result *result) { const struct sieve_message_data *msgdata = result->action_env.msgdata; const struct sieve_script_env *senv = result->action_env.scriptenv; @@ -886,6 +889,10 @@ static void _sieve_result_prepare_environment(struct sieve_result *result) result->action_env.exec_status = ( senv->exec_status == NULL ? t_new(struct sieve_exec_status, 1) : senv->exec_status ); + + if ( result->action_env.ehandler != NULL ) + sieve_error_handler_unref(&result->action_env.ehandler); + result->action_env.ehandler = sieve_varexpand_ehandler_create (result->ehandler, senv->action_log_format, tab); } @@ -996,7 +1003,7 @@ static bool _sieve_result_implicit_keep bool sieve_result_implicit_keep (struct sieve_result *result) { - _sieve_result_prepare_environment(result); + _sieve_result_prepare_execution(result); return _sieve_result_implicit_keep(result, TRUE); } @@ -1030,7 +1037,7 @@ int sieve_result_execute /* Prepare environment */ - _sieve_result_prepare_environment(result); + _sieve_result_prepare_execution(result); /* Make notice of this attempt */ -- GitLab