Always free the PGresult pointer returned by PQexec

Fix a somewhat big memory leak
This commit is contained in:
louiz’
2017-12-05 01:05:45 +01:00
parent 24dc05dd97
commit c3313d0d41
2 changed files with 10 additions and 1 deletions
+6
View File
@@ -1,6 +1,8 @@
#include <biboumi.h>
#ifdef PQ_FOUND
#include <utils/scopeguard.hpp>
#include <database/postgresql_engine.hpp>
#include <database/postgresql_statement.hpp>
@@ -53,6 +55,10 @@ std::tuple<bool, std::string> PostgresqlEngine::raw_exec(const std::string& quer
{
log_debug("raw_exec:", query);
PGresult* res = PQexec(this->conn, query.data());
auto sg = utils::make_scope_guard([res](){
PQclear(res);
});
auto res_status = PQresultStatus(res);
if (res_status != PGRES_COMMAND_OK)
return std::make_tuple(false, PQresultErrorMessage(res));