summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2009-09-03 10:24:48 +0000
committerMichael Meskes2009-09-03 10:24:48 +0000
commit0995f1546a9e4d77504e97bbccfde3c260020b26 (patch)
tree288379ddcbcc00d82aec31edaa5d7ace047a2c09
parentce4fb24aee2a4463d772af0cc65c1397cc0391f5 (diff)
Fixed incorrect memory management.
-rw-r--r--src/interfaces/ecpg/ecpglib/execute.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 0305425f1b..a53b1a222c 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -469,8 +469,8 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
char *newcopy = NULL;
/*
- * arrays are not possible unless the attribute is an array too FIXME: we
- * do not know if the attribute is an array here
+ * arrays are not possible unless the attribute is an array too
+ * FIXME: we do not know if the attribute is an array here
*/
#if 0
if (var->arrsize > 1 &&...)
@@ -818,6 +818,9 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
if (var->arrsize > 1)
{
+ if (!(mallocedval = ecpg_strdup("array [", lineno)))
+ return false;
+
for (element = 0; element < var->arrsize; element++)
{
nval = PGTYPESnumeric_new();
@@ -833,15 +836,12 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
slen = strlen(str);
PGTYPESnumeric_free(nval);
- if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno)))
+ if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + 2, lineno)))
{
ecpg_free(str);
return false;
}
- if (!element)
- strcpy(mallocedval, "array [");
-
strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
strcpy(mallocedval + strlen(mallocedval), ",");
ecpg_free(str);
@@ -885,6 +885,9 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
if (var->arrsize > 1)
{
+ if (!(mallocedval = ecpg_strdup("array [", lineno)))
+ return false;
+
for (element = 0; element < var->arrsize; element++)
{
str = quote_postgres(PGTYPESinterval_to_asc((interval *) ((var + var->offset * element)->value)), quote, lineno);
@@ -892,15 +895,12 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
return false;
slen = strlen(str);
- if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [],interval "), lineno)))
+ if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + 2, lineno)))
{
ecpg_free(str);
return false;
}
- if (!element)
- strcpy(mallocedval, "array [");
-
strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
strcpy(mallocedval + strlen(mallocedval), ",");
ecpg_free(str);
@@ -936,6 +936,9 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
if (var->arrsize > 1)
{
+ if (!(mallocedval = ecpg_strdup("array [", lineno)))
+ return false;
+
for (element = 0; element < var->arrsize; element++)
{
str = quote_postgres(PGTYPESdate_to_asc(*(date *) ((var + var->offset * element)->value)), quote, lineno);
@@ -943,15 +946,12 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
return false;
slen = strlen(str);
- if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [],date "), lineno)))
+ if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + 2, lineno)))
{
ecpg_free(str);
return false;
}
- if (!element)
- strcpy(mallocedval, "array [");
-
strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
strcpy(mallocedval + strlen(mallocedval), ",");
ecpg_free(str);
@@ -987,6 +987,9 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
if (var->arrsize > 1)
{
+ if (!(mallocedval = ecpg_strdup("array [", lineno)))
+ return false;
+
for (element = 0; element < var->arrsize; element++)
{
str = quote_postgres(PGTYPEStimestamp_to_asc(*(timestamp *) ((var + var->offset * element)->value)), quote, lineno);
@@ -995,15 +998,12 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
slen = strlen(str);
- if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [], timestamp "), lineno)))
+ if (!(mallocedval = ecpg_realloc(mallocedval, strlen(mallocedval) + slen + 2, lineno)))
{
ecpg_free(str);
return false;
}
- if (!element)
- strcpy(mallocedval, "array [");
-
strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
strcpy(mallocedval + strlen(mallocedval), ",");
ecpg_free(str);