summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2025-12-01 16:34:19 +0100
committerPeter Eisentraut <peter@eisentraut.org>2025-12-01 16:41:08 +0100
commit2fcc5a715130fbe9fb6eadf338e3bfe560eb0cb5 (patch)
treef01d1587bf020594219d1d0fc70ccf9ee2ef84b9 /src
parenta87987cafca683e9076c424f99bae117211a83a4 (diff)
Fix a strict aliasing violation
This one is almost a textbook example of an aliasing violation, and it is straightforward to fix, so clean it up. (The warning only shows up if you remove the -fno-strict-aliasing option.) Also, move the code after the error checking. Doesn't make a difference technically, but it seems strange to do actions before errors are checked. Reported-by: Tatsuo Ishii <ishii@postgresql.org> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/20240724.155525.366150353176322967.ishii%40postgresql.org
Diffstat (limited to 'src')
-rw-r--r--src/backend/replication/logical/origin.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c
index 4632aa8115d..2380f369578 100644
--- a/src/backend/replication/logical/origin.c
+++ b/src/backend/replication/logical/origin.c
@@ -789,14 +789,6 @@ StartupReplicationOrigin(void)
readBytes = read(fd, &disk_state, sizeof(disk_state));
- /* no further data */
- if (readBytes == sizeof(crc))
- {
- /* not pretty, but simple ... */
- file_crc = *(pg_crc32c *) &disk_state;
- break;
- }
-
if (readBytes < 0)
{
ereport(PANIC,
@@ -805,6 +797,13 @@ StartupReplicationOrigin(void)
path)));
}
+ /* no further data */
+ if (readBytes == sizeof(crc))
+ {
+ memcpy(&file_crc, &disk_state, sizeof(file_crc));
+ break;
+ }
+
if (readBytes != sizeof(disk_state))
{
ereport(PANIC,