Fix memory leak.
authorTatsuo Ishii <ishii@sraoss.co.jp>
Wed, 14 Aug 2019 00:14:36 +0000 (09:14 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Wed, 14 Aug 2019 00:21:21 +0000 (09:21 +0900)
Pointed out by Coverity.

src/parser/outfuncs.c

index ad88a752b86ef998d30ec845876d932366b32482..1f1c0686d901f658d6cd56f6e2a99539032f6900 100644 (file)
@@ -3568,6 +3568,8 @@ _outDropStmt(String *str, DropStmt *node)
 {
        List *objname;
        char            *p;
+       char            *p1;
+       List            *l;
 
        string_append_char(str, "DROP ");
        switch (node->removeType)
@@ -3664,8 +3666,12 @@ _outDropStmt(String *str, DropStmt *node)
                        objname = lfirst(list_head(node->objects));
                        string_append_char(str, strVal(llast(objname)));
                        string_append_char(str, " ON ");
-                       string_append_char(str, NameListToString(list_truncate(list_copy(objname),
-                                                                                                                                  list_length(objname) - 1)));
+                       l = list_truncate(list_copy(objname),
+                                                         list_length(objname) - 1);
+                       p = NameListToString(l);
+                       string_append_char(str, p);
+                       pfree(p);
+                       list_free(l);
                        break;
 
                case OBJECT_OPERATOR:
@@ -3681,11 +3687,15 @@ _outDropStmt(String *str, DropStmt *node)
                        string_append_char(str, strVal(llast(objname)));
                        string_append_char(str, " USING ");
                        string_append_char(str, "'");
-                       p = escape_string(NameListToString(list_truncate(list_copy(objname), list_length(objname) - 1)));
-                       string_append_char(str, p);
+                       l = list_truncate(list_copy(objname),
+                                                         list_length(objname) - 1);
+                       p = NameListToString(l);
+                       p1 = escape_string(p);
+                       string_append_char(str, p1);
+                       pfree(p1);
                        pfree(p);
+                       list_free(l);
                        string_append_char(str, "'");
-
                        break;
 
                case OBJECT_CAST: