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
