From f457eb9c232f0e35143aa3ce37480b7b07148c53 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 15 Mar 2026 01:23:12 +0000 Subject: [PATCH 4/5] Use null pointer as an empty marker Here simplehash is being simply used as a Set NULL pointer is a natural empty marker. --- src/bin/pg_rewind/filemap.c | 7 ++++++- src/bin/pg_rewind/filemap.h | 2 -- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c index b79c47f925..574a282d84 100644 --- a/src/bin/pg_rewind/filemap.c +++ b/src/bin/pg_rewind/filemap.c @@ -45,6 +45,9 @@ #define SH_KEY path #define SH_HASH_KEY(tb, key) hash_string(key) #define SH_EQUAL(tb, a, b) (strcmp(a, b) == 0) +#define SH_ENTRY_EMPTY(entry) ((entry)->path == NULL) +#define SH_MAKE_EMPTY(entry) ((entry)->path = NULL) +#define SH_MAKE_IN_USE(entry) ((void)0) #define SH_SCOPE static inline #define SH_RAW_ALLOCATOR pg_malloc0 #define SH_DECLARE @@ -68,7 +71,6 @@ static file_entry_t *lookup_filehash_entry(const char *path); typedef struct keepwal_entry { const char *path; - uint32 status; } keepwal_entry; #define SH_PREFIX keepwal @@ -77,6 +79,9 @@ typedef struct keepwal_entry #define SH_KEY path #define SH_HASH_KEY(tb, key) hash_string(key) #define SH_EQUAL(tb, a, b) (strcmp(a, b) == 0) +#define SH_ENTRY_EMPTY(entry) ((entry)->path == NULL) +#define SH_MAKE_EMPTY(entry) ((entry)->path = NULL) +#define SH_MAKE_IN_USE(entry) ((void)0) #define SH_SCOPE static inline #define SH_RAW_ALLOCATOR pg_malloc0 #define SH_DECLARE diff --git a/src/bin/pg_rewind/filemap.h b/src/bin/pg_rewind/filemap.h index 4c6dd8740d..b3e67be1da 100644 --- a/src/bin/pg_rewind/filemap.h +++ b/src/bin/pg_rewind/filemap.h @@ -56,8 +56,6 @@ typedef enum */ typedef struct file_entry_t { - uint32 status; /* hash status */ - const char *path; file_content_type_t content_type; -- 2.34.1