From a8c7622252cf8fd8467a7eb9c800060d1d1c27d1 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Thu, 29 Nov 2012 09:01:37 +0100 Subject: [PATCH] postgresql plugin: Fixed a memory leak occurring on every (successful) write. --- src/postgresql.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/postgresql.c b/src/postgresql.c index 15d4666b..6c9ab44e 100644 --- a/src/postgresql.c +++ b/src/postgresql.c @@ -900,10 +900,10 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl, if ((PGRES_COMMAND_OK != PQresultStatus (res)) && (PGRES_TUPLES_OK != PQresultStatus (res))) { + PQclear (res); + if ((CONNECTION_OK != PQstatus (db->conn)) && (0 == c_psql_check_connection (db))) { - PQclear (res); - /* try again */ res = PQexecParams (db->conn, writer->statement, STATIC_ARRAY_SIZE (params), NULL, @@ -912,6 +912,7 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl, if ((PGRES_COMMAND_OK == PQresultStatus (res)) || (PGRES_TUPLES_OK == PQresultStatus (res))) { + PQclear (res); success = 1; continue; } @@ -932,6 +933,8 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl, pthread_mutex_unlock (&db->db_lock); return -1; } + + PQclear (res); success = 1; } -- 2.30.2