Thread

  1. Re: POC: make mxidoff 64 bits

    zengman <zengman@halodbtech.com> — 2025-12-30T01:49:36Z

    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);
    ```
    
    --
    Regards,
    Man Zeng
    www.openhalo.org