postgres.git / summary / log / commit / refs

commit    2fcc5a715130fbe9fb6eadf338e3bfe560eb0cb5
Author:   Peter Eisentraut <peter@eisentraut.org>
Date:     Mon Dec 01 15:34:19 2025 +0000

    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


src/backend/replication/logical/origin.c | 15 +++++++-------- 1 file 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, [parent: a87987cafca6]