Fix overridden callbacks in pg_rewind.
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Tue, 2 May 2023 11:15:29 +0000 (13:15 +0200)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Tue, 2 May 2023 11:15:29 +0000 (13:15 +0200)
The <source>_traverse_files functions take a callback for processing
files, but both the local and libpq source implementations called the
function directly without using the callback argument. While there is
no bug right now as the function called is the same as the callback,
fix by calling the callback to reduce the risk of subtle bugs in the
future.

Author: Junwang Zhao <zhjwpku@gmail.com>
Reviewed-by: Richard Guo <guofenglinux@gmail.com>
Discussion: https://postgr.es/m/CAEG8a3Jdwgh+PZr2zh1=t8apA4Yz8tKq+uubPqoCt14nvWKHEw@mail.gmail.com

src/bin/pg_rewind/libpq_source.c
src/bin/pg_rewind/local_source.c

index 5f486b2a616f0e139910c0b506f4ffbeb7ea01de..0d8e9ee2d1a7390d8328cb313a13f1444f812ab4 100644 (file)
@@ -304,7 +304,7 @@ libpq_traverse_files(rewind_source *source, process_file_callback_t callback)
        else
            type = FILE_TYPE_REGULAR;
 
-       process_source_file(path, type, filesize, link_target);
+       callback(path, type, filesize, link_target);
    }
    PQclear(res);
 }
index 4e2a1376c6906e7115946bc81afffe1f2db52a4e..9bd43cba7481659726c23e4ee6c1497973526a11 100644 (file)
@@ -59,7 +59,7 @@ init_local_source(const char *datadir)
 static void
 local_traverse_files(rewind_source *source, process_file_callback_t callback)
 {
-   traverse_datadir(((local_source *) source)->datadir, &process_source_file);
+   traverse_datadir(((local_source *) source)->datadir, callback);
 }
 
 static char *