]> granicus.if.org Git - postgresql/commitdiff
Moved some free() calls that coverity correctly complains about.
authorMichael Meskes <meskes@postgresql.org>
Sun, 25 Jun 2006 09:38:40 +0000 (09:38 +0000)
committerMichael Meskes <meskes@postgresql.org>
Sun, 25 Jun 2006 09:38:40 +0000 (09:38 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ecpglib/descriptor.c
src/interfaces/ecpg/ecpglib/execute.c
src/interfaces/ecpg/test/test_init.pgc

index 9ddb041087b3a1fb9d4f1060b5b0a1972687c923..5477c7465209cf8ba76e834cd91623afcc564576 100644 (file)
@@ -2026,5 +2026,9 @@ we Jun 21 13:37:00 CEST 2006
 
        - Added some more coverity report patches send in by Martijn van
          Oosterhout <kleptog@svana.org>.
+
+Su Jun 25 11:27:46 CEST 2006
+
+       - Moved some free() calls that coverity correctly complains about.
        - Set ecpg library version to 5.2.
        - Set ecpg version to 4.2.1.
index 19fd0173a3f72b6b7a1a079761569111d03fda54..9a3086bdda7ed7e20fb7ce00ae508f77ac21cdb5 100644 (file)
@@ -1,6 +1,6 @@
 /* dynamic SQL support routines
  *
- * $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.15 2006/06/21 10:24:40 meskes Exp $
+ * $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.16 2006/06/25 09:38:39 meskes Exp $
  */
 
 #define POSTGRES_ECPG_INTERNAL
@@ -349,7 +349,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
                                        return false;
                                }
                                /* allocate storage if needed */
-                               if (arrsize == 0 && var != NULL && *(void **) var == NULL)
+                               if (arrsize == 0 && *(void **) var == NULL)
                                {
                                        void *mem = (void *) ECPGalloc(offset * ntuples, lineno);
                                        if (!mem)
index fc2af97547012f6608c93a7746c3c9a807c646be..4c43195b9426697b55c879cd9e1ae534ec2d2162 100644 (file)
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.48 2006/06/21 11:38:07 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.49 2006/06/25 09:38:39 meskes Exp $ */
 
 /*
  * The aim is to get a simpler inteface to the database routines.
@@ -896,7 +896,7 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
                                                        if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno)))
                                                        {
                                                                PGTYPESnumeric_free(nval);
-                                                               free(str);
+                                                               ECPGfree(str);
                                                                return false;
                                                        }
 
@@ -905,8 +905,9 @@ 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);
                                                }
-                                               PGTYPESnumeric_free(nval);
                                                strcpy(mallocedval + strlen(mallocedval) - 1, "]");
                                        }
                                        else
@@ -929,12 +930,12 @@ 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;
                                        *malloced_p = true;
-                                       PGTYPESnumeric_free(nval);
-                                       free(str);
                                }
                                break;
 
@@ -964,6 +965,7 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
                                                        strcpy(mallocedval + strlen(mallocedval), "interval ");
                                                        strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                                                        strcpy(mallocedval + strlen(mallocedval), ",");
+                                                       ECPGfree(str);
                                                }
                                                strcpy(mallocedval + strlen(mallocedval) - 1, "]");
                                        }
@@ -983,11 +985,11 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
                                                strcpy(mallocedval, "interval ");
                                                /* also copy trailing '\0' */
                                                strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
+                                               ECPGfree(str);
                                        }
 
                                        *tobeinserted_p = mallocedval;
                                        *malloced_p = true;
-                                       ECPGfree(str);
                                }
                                break;
 
@@ -1163,6 +1165,7 @@ ECPGexecute(struct statement * stmt)
                        if (desc == NULL)
                        {
                                ECPGraise(stmt->lineno, ECPG_UNKNOWN_DESCRIPTOR, ECPG_SQLSTATE_INVALID_SQL_DESCRIPTOR_NAME, var->pointer);
+                               ECPGfree(copiedquery);
                                return false;
                        }
 
@@ -1194,7 +1197,10 @@ ECPGexecute(struct statement * stmt)
                                                        desc_inlist.ind_offset = 0;
                                                }
                                                if (!ECPGstore_input(stmt->lineno, stmt->force_indicator, &desc_inlist, &tobeinserted, &malloced))
+                                               {
+                                                       ECPGfree(copiedquery);
                                                        return false;
+                                               }
 
                                                break;
                                        }
index 29b14b20bd5387f6db41b4b8374eb99456a0ea70..2248636218435cfa60b4be8885b41f95c6194df9 100644 (file)
@@ -23,7 +23,7 @@ namespace N
 #endif
 
 int main(void)
-{ struct sa x,*y;
+{ struct sa x,*y=&x;
 exec sql begin declare section;
 int a=(int)2;
 int b=2+2;