Mercurial > dovecot > core-2.2
changeset 18678:8973648dd361
fts-solr: Fixed memory leak at user deinit.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 13 May 2015 17:16:21 +0300 |
parents | e6e04177374d |
children | b6ea460e7cc4 |
files | src/plugins/fts-solr/fts-backend-solr-old.c src/plugins/fts-solr/fts-backend-solr.c src/plugins/fts-solr/solr-connection.c src/plugins/fts-solr/solr-connection.h |
diffstat | 4 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts-solr/fts-backend-solr-old.c Wed May 13 16:54:27 2015 +0300 +++ b/src/plugins/fts-solr/fts-backend-solr-old.c Wed May 13 17:16:21 2015 +0300 @@ -249,6 +249,7 @@ { struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend; + solr_connection_deinit(&backend->solr_conn); i_free(backend->id_namespace); i_free(backend->id_username); i_free(backend);
--- a/src/plugins/fts-solr/fts-backend-solr.c Wed May 13 16:54:27 2015 +0300 +++ b/src/plugins/fts-solr/fts-backend-solr.c Wed May 13 17:16:21 2015 +0300 @@ -179,6 +179,7 @@ { struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend; + solr_connection_deinit(&backend->solr_conn); i_free(backend); }
--- a/src/plugins/fts-solr/solr-connection.c Wed May 13 16:54:27 2015 +0300 +++ b/src/plugins/fts-solr/solr-connection.c Wed May 13 17:16:21 2015 +0300 @@ -142,8 +142,11 @@ return 0; } -void solr_connection_deinit(struct solr_connection *conn) +void solr_connection_deinit(struct solr_connection **_conn) { + struct solr_connection *conn = *_conn; + + *_conn = NULL; XML_ParserFree(conn->xml_parser); i_free(conn->http_host); i_free(conn->http_base_url);
--- a/src/plugins/fts-solr/solr-connection.h Wed May 13 16:54:27 2015 +0300 +++ b/src/plugins/fts-solr/solr-connection.h Wed May 13 17:16:21 2015 +0300 @@ -15,7 +15,7 @@ int solr_connection_init(const char *url, bool debug, struct solr_connection **conn_r, const char **error_r); -void solr_connection_deinit(struct solr_connection *conn); +void solr_connection_deinit(struct solr_connection **conn); int solr_connection_select(struct solr_connection *conn, const char *query, pool_t pool, struct solr_result ***box_results_r);