]> granicus.if.org Git - postgresql/commitdiff
Added some more coverity report patches send in by Joachim Wieland <joe@mcknight...
authorMichael Meskes <meskes@postgresql.org>
Mon, 26 Jun 2006 09:20:19 +0000 (09:20 +0000)
committerMichael Meskes <meskes@postgresql.org>
Mon, 26 Jun 2006 09:20:19 +0000 (09:20 +0000)
src/interfaces/ecpg/compatlib/informix.c
src/interfaces/ecpg/ecpglib/execute.c

index 3cd8977521b4891554ec10913966e8ed20a7d73a..a92bca88c0c72802f7fbf35b70b055fa2fa8399c 100644 (file)
@@ -415,6 +415,7 @@ dectoint(decimal *np, int *ip)
        }
 
        ret = PGTYPESnumeric_to_int(nres, ip);
+       PGTYPESnumeric_free(nres);
 
        if (ret == PGTYPES_NUM_OVERFLOW)
                ret = ECPG_INFORMIX_NUM_OVERFLOW;
index e1cc60e88b62ad47110b50e785291625551e2809..f8d348d0a86f124fe4414af7b432dfdd3632abd8 100644 (file)
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.43.2.5 2006/06/25 09:59:18 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.43.2.6 2006/06/26 09:20:19 meskes Exp $ */
 
 /*
  * The aim is to get a simpler inteface to the database routines.
@@ -870,16 +870,16 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
                        case ECPGt_numeric:
                                {
                                        char       *str = NULL;
-                                       int                     slen;
+                                       int         slen;
                                        numeric    *nval = PGTYPESnumeric_new();
 
-                                       if (!nval)
-                                               return false;
-
                                        if (var->arrsize > 1)
                                        {
                                                for (element = 0; element < var->arrsize; element++, nval = PGTYPESnumeric_new())
                                                {
+                                                       if (!nval)
+                                                               return false;
+                                                               
                                                        if (var->type == ECPGt_numeric)
                                                                PGTYPESnumeric_copy((numeric *) ((var + var->offset * element)->value), nval);
                                                        else
@@ -887,10 +887,10 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
 
                                                        str = PGTYPESnumeric_to_asc(nval, nval->dscale);
                                                        slen = strlen(str);
+                                                       PGTYPESnumeric_free(nval);
 
                                                        if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno)))
                                                        {
-                                                               PGTYPESnumeric_free(nval);
                                                                ECPGfree(str);
                                                                return false;
                                                        }
@@ -901,24 +901,25 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
                                                        strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                                                        strcpy(mallocedval + strlen(mallocedval), ",");
                                                        ECPGfree(str);
-                                                       PGTYPESnumeric_free(nval);
                                                }
                                                strcpy(mallocedval + strlen(mallocedval) - 1, "]");
                                        }
                                        else
                                        {
+                                               if (!nval)
+                                                       return false;
+
                                                if (var->type == ECPGt_numeric)
                                                        PGTYPESnumeric_copy((numeric *) (var->value), nval);
                                                else
                                                        PGTYPESnumeric_from_decimal((decimal *) (var->value), nval);
 
                                                str = PGTYPESnumeric_to_asc(nval, nval->dscale);
-
                                                slen = strlen(str);
+                                               PGTYPESnumeric_free(nval);
 
                                                if (!(mallocedval = ECPGalloc(slen + 1, lineno)))
                                                {
-                                                       PGTYPESnumeric_free(nval);
                                                        free(str);
                                                        return false;
                                                }
@@ -926,7 +927,6 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
                                                strncpy(mallocedval, str, slen);
                                                mallocedval[slen] = '\0';
                                                ECPGfree(str);
-                                               PGTYPESnumeric_free(nval);
                                        }
 
                                        *tobeinserted_p = mallocedval;