]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
reindexdb: Fix warning about uninitialized indices_tables_cell
authorAlexander Korotkov <akorotkov@postgresql.org>
Mon, 25 Mar 2024 09:35:30 +0000 (11:35 +0200)
committerAlexander Korotkov <akorotkov@postgresql.org>
Mon, 25 Mar 2024 09:40:25 +0000 (11:40 +0200)
Initialize indices_tables_cell with NULL to silence the warning.  Also,
refactor the place of the first assignment of indices_tables_cell.

Reported-by: Thomas Munro, David Rowley, Tom Lane, Richard Guo
Discussion: https://postgr.es/m/2348025.1711332418%40sss.pgh.pa.us
Discussion: https://postgr.es/m/E1roXs4-005UdX-1V%40gemulon.postgresql.org

src/bin/scripts/reindexdb.c

index a46b07d97a628321c22c0574c287102db2c38971..904c196fbbaa8488f43f5100975b687f7c618faa 100644 (file)
@@ -277,7 +277,7 @@ reindex_one_database(ConnParams *cparams, ReindexType type,
 {
        PGconn     *conn;
        SimpleStringListCell *cell;
-       SimpleStringListCell *indices_tables_cell;
+       SimpleStringListCell *indices_tables_cell = NULL;
        bool            parallel = concurrentCons > 1;
        SimpleStringList *process_list = user_list;
        SimpleStringList *indices_tables_list = NULL;
@@ -366,12 +366,20 @@ reindex_one_database(ConnParams *cparams, ReindexType type,
                                indices_tables_list = get_parallel_object_list(conn, process_type,
                                                                                                                           user_list, echo);
 
-                               if (indices_tables_list)
-                                       indices_tables_cell = indices_tables_list->head;
-
-                               /* Bail out if nothing to process */
-                               if (process_list == NULL)
+                               /*
+                                * Bail out if nothing to process.  'user_list' was modified
+                                * in-place, so check if it has at least one cell.
+                                */
+                               if (user_list->head == NULL)
                                        return;
+
+                               /*
+                                * Assuming 'user_list' is not empty, 'indices_tables_list'
+                                * shouldn't be empty as well.
+                                */
+                               Assert(indices_tables_list != NULL);
+                               indices_tables_cell = indices_tables_list->head;
+
                                break;
 
                        case REINDEX_SYSTEM: