summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2012-03-08 20:21:12 +0000
committerPeter Eisentraut2012-03-08 20:21:12 +0000
commit8dd4d10d481ec1da568ab424e62a3e50c069baaf (patch)
treed9a01d79447ec937724b6896e457a4613deb6bc5
parentd93f209f483f006534ae543667a1254b6fdec183 (diff)
ecpg: Fix rare memory leaks
found by Coverity
-rw-r--r--src/interfaces/ecpg/ecpglib/connect.c4
-rw-r--r--src/interfaces/ecpg/ecpglib/execute.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index cf625f96a3..b54b1f5503 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -519,6 +519,10 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
ecpg_free(realname);
if (dbname)
ecpg_free(dbname);
+ if (conn_keywords)
+ ecpg_free(conn_keywords);
+ if (conn_values)
+ ecpg_free(conn_values);
free(this);
return false;
}
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 311bc5cbc5..50a2d95347 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -1776,6 +1776,7 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char
{
setlocale(LC_NUMERIC, oldlocale);
ecpg_free(oldlocale);
+ free_statement(stmt);
va_end(args);
return (false);
}
@@ -1807,6 +1808,7 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char
ecpg_raise(lineno, ECPG_INVALID_STMT, ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME, stmt->command);
setlocale(LC_NUMERIC, oldlocale);
ecpg_free(oldlocale);
+ free_statement(stmt);
va_end(args);
return (false);
}