1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-22 21:53:06 +03:00

Added some more coverity report patches send in by Joachim Wieland <joe@mcknight.de>.

This commit is contained in:
Michael Meskes
2006-06-26 09:20:30 +00:00
parent b4595d71f2
commit a503fd3634
2 changed files with 11 additions and 10 deletions

View File

@@ -415,6 +415,7 @@ dectoint(decimal *np, int *ip)
} }
ret = PGTYPESnumeric_to_int(nres, ip); ret = PGTYPESnumeric_to_int(nres, ip);
PGTYPESnumeric_free(nres);
if (ret == PGTYPES_NUM_OVERFLOW) if (ret == PGTYPES_NUM_OVERFLOW)
ret = ECPG_INFORMIX_NUM_OVERFLOW; ret = ECPG_INFORMIX_NUM_OVERFLOW;

View File

@@ -1,4 +1,4 @@
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.38.4.7 2006/06/25 10:00:11 meskes Exp $ */ /* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.38.4.8 2006/06/26 09:20:30 meskes Exp $ */
/* /*
* The aim is to get a simpler inteface to the database routines. * The aim is to get a simpler inteface to the database routines.
@@ -882,13 +882,13 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
int slen; int slen;
numeric *nval = PGTYPESnumeric_new(); numeric *nval = PGTYPESnumeric_new();
if (!nval)
return false;
if (var->arrsize > 1) if (var->arrsize > 1)
{ {
for (element = 0; element < var->arrsize; element++, nval = PGTYPESnumeric_new()) for (element = 0; element < var->arrsize; element++, nval = PGTYPESnumeric_new())
{ {
if (!nval)
return false;
if (var->type == ECPGt_numeric) if (var->type == ECPGt_numeric)
PGTYPESnumeric_copy((numeric *) ((var + var->offset * element)->value), nval); PGTYPESnumeric_copy((numeric *) ((var + var->offset * element)->value), nval);
else else
@@ -896,10 +896,10 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
str = PGTYPESnumeric_to_asc(nval, nval->dscale); str = PGTYPESnumeric_to_asc(nval, nval->dscale);
slen = strlen(str); slen = strlen(str);
PGTYPESnumeric_free(nval);
if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno))) if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno)))
{ {
PGTYPESnumeric_free(nval);
ECPGfree(str); ECPGfree(str);
return false; return false;
} }
@@ -910,24 +910,25 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
strncpy(mallocedval + strlen(mallocedval), str, slen + 1); strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
strcpy(mallocedval + strlen(mallocedval), ","); strcpy(mallocedval + strlen(mallocedval), ",");
ECPGfree(str); ECPGfree(str);
PGTYPESnumeric_free(nval);
} }
strcpy(mallocedval + strlen(mallocedval) - 1, "]"); strcpy(mallocedval + strlen(mallocedval) - 1, "]");
} }
else else
{ {
if (!nval)
return false;
if (var->type == ECPGt_numeric) if (var->type == ECPGt_numeric)
PGTYPESnumeric_copy((numeric *) (var->value), nval); PGTYPESnumeric_copy((numeric *) (var->value), nval);
else else
PGTYPESnumeric_from_decimal((decimal *) (var->value), nval); PGTYPESnumeric_from_decimal((decimal *) (var->value), nval);
str = PGTYPESnumeric_to_asc(nval, nval->dscale); str = PGTYPESnumeric_to_asc(nval, nval->dscale);
slen = strlen(str); slen = strlen(str);
PGTYPESnumeric_free(nval);
if (!(mallocedval = ECPGalloc(slen + 1, lineno))) if (!(mallocedval = ECPGalloc(slen + 1, lineno)))
{ {
PGTYPESnumeric_free(nval);
free(str); free(str);
return false; return false;
} }
@@ -935,7 +936,6 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
strncpy(mallocedval, str, slen); strncpy(mallocedval, str, slen);
mallocedval[slen] = '\0'; mallocedval[slen] = '\0';
ECPGfree(str); ECPGfree(str);
PGTYPESnumeric_free(nval);
} }
*tobeinserted_p = mallocedval; *tobeinserted_p = mallocedval;