Check HAVE_COPY_FILE_RANGE before calling copy_file_range
authorTomas Vondra <tomas.vondra@postgresql.org>
Fri, 5 Apr 2024 17:38:16 +0000 (19:38 +0200)
committerTomas Vondra <tomas.vondra@postgresql.org>
Fri, 5 Apr 2024 17:38:20 +0000 (19:38 +0200)
Fix a mistake in ac8110155132 - write_reconstructed_file() called
copy_file_range() without properly checking HAVE_COPY_FILE_RANGE.

Reported by several macOS machines. Also reported by cfbot, but I missed
that issue before commit.

src/bin/pg_combinebackup/reconstruct.c

index b059be8d0a60150b666c2209cf3ba251e2afcad1..15f62c18df84aeb1cb55fe435032830df05bf6a8 100644 (file)
@@ -672,6 +672,7 @@ write_reconstructed_file(char *input_filename,
        }
        else                    /* use copy_file_range */
        {
+#if defined(HAVE_COPY_FILE_RANGE)
            /* copy_file_range modifies the offset, so use a local copy */
            off_t       off = offsetmap[i];
            size_t      nwritten = 0;
@@ -706,6 +707,9 @@ write_reconstructed_file(char *input_filename,
            if (pg_checksum_update(checksum_ctx, buffer, BLCKSZ) < 0)
                pg_fatal("could not update checksum of file \"%s\"",
                         output_filename);
+#else
+           pg_fatal("copy_file_range not supported on this platform");
+#endif
        }
    }