summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2006-06-06 11:36:00 +0000
committerMichael Meskes2006-06-06 11:36:00 +0000
commit8fc6b3dbf38a3626873fbb152b6f81e624ea4d3d (patch)
tree2a7f983752a20108009be0cf579b083bad4457b7
parentc8fc48e257b24b226a2449258c2c6682a848ae22 (diff)
Fixed two memory leaks in ecpglib.
-rw-r--r--src/interfaces/ecpg/ecpglib/data.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c
index fe258dba8f8..a7e1a835350 100644
--- a/src/interfaces/ecpg/ecpglib/data.c
+++ b/src/interfaces/ecpg/ecpglib/data.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.20.2.2 2005/08/24 10:35:54 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.20.2.3 2006/06/06 11:36:00 meskes Exp $ */
#define POSTGRES_ECPG_INTERNAL
#include "postgres_fe.h"
@@ -426,6 +426,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
if (garbage_left(isarray, scan_length, compat))
{
+ free(nres);
ECPGraise(lineno, ECPG_NUMERIC_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
@@ -438,6 +439,8 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
PGTYPESnumeric_copy(nres, (numeric *) (var + offset * act_tuple));
else
PGTYPESnumeric_to_decimal(nres, (decimal *) (var + offset * act_tuple));
+
+ free(nres);
break;
case ECPGt_interval:
@@ -469,6 +472,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
if (garbage_left(isarray, scan_length, compat))
{
+ free(ires);
ECPGraise(lineno, ECPG_INTERVAL_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
@@ -478,6 +482,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
ires = PGTYPESinterval_from_asc("0 seconds", NULL);
PGTYPESinterval_copy(ires, (interval *) (var + offset * act_tuple));
+ free(ires);
break;
case ECPGt_date:
if (pval)