On 30/12/2025 03:49, zengman wrote:
Hi,

I'm currently looking into the `SlruReadSwitchPageSlow` function and have a question 
regarding the expression `&state->buf.data + bytes_read` —
I suspect the ampersand (&) here might be misused. Would you be able to help me 
verify this?

```
        while (bytes_read < BLCKSZ)
        {
                ssize_t         rc;

                rc = pg_pread(state->fd,
                                          &state->buf.data + bytes_read,
                                          BLCKSZ - bytes_read,
                                          offset);
                if (rc < 0)
                {
                        if (errno == EINTR)
                                continue;
                        pg_fatal("could not read file \"%s\": %m", state->fn);
                }
                if (rc == 0)
                {
                        /* unexpected EOF */
                        pg_log(PG_WARNING, "unexpected EOF reading file \"%s\" at 
offset %u, reading as zeros",
                                   state->fn, (unsigned int) offset);
                        memset(&state->buf.data + bytes_read, 0, BLCKSZ - 
bytes_read);
                        break;
                }
                bytes_read += rc;
                offset += rc;
        }
```

```
                rc = pg_pread(state->fd,
                                          &state->buf.data + bytes_read,
                                          BLCKSZ - bytes_read,
                                          offset);
memset(&state->buf.data + bytes_read, 0, BLCKSZ - bytes_read);
```

Yes, you're right. Good catch! Committed the fix, thanks.

- Heikki



Reply via email to