pg_upgrade: fix one-byte per empty db memory leak
authorBruce Momjian <bruce@momjian.us>
Fri, 9 Jan 2015 17:12:30 +0000 (12:12 -0500)
committerBruce Momjian <bruce@momjian.us>
Fri, 9 Jan 2015 17:12:30 +0000 (12:12 -0500)
Report by Tatsuo Ishii, Coverity

contrib/pg_upgrade/relfilenode.c

index 70753f233dcb101aa99afae0c628cd915640630c..423802bd2392bd3e38ff05167b612a812938cdc2 100644 (file)
@@ -110,10 +110,8 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
            pg_fatal("old database \"%s\" not found in the new cluster\n",
                     old_db->db_name);
 
-       n_maps = 0;
        mappings = gen_db_file_maps(old_db, new_db, &n_maps, old_pgdata,
                                    new_pgdata);
-
        if (n_maps)
        {
            print_maps(mappings, n_maps, new_db->db_name);
@@ -123,9 +121,9 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
 #endif
            transfer_single_new_db(pageConverter, mappings, n_maps,
                                   old_tablespace);
-
-           pg_free(mappings);
        }
+       /* We allocate something even for n_maps == 0 */
+       pg_free(mappings);
    }
 
    return;