fix-possible-invalid-pointer-read_stream.patch

application/octet-stream

Filename: fix-possible-invalid-pointer-read_stream.patch
Type: application/octet-stream
Part: 0
Message: Re: Confine vacuum skip logic to lazy_scan_skip

Patch

Format: unified
File+
src/backend/storage/aio/read_stream.c 7 0
diff --git a/src/backend/storage/aio/read_stream.c b/src/backend/storage/aio/read_stream.c
index 04bdb5e6d4..18e9b4f3c4 100644
--- a/src/backend/storage/aio/read_stream.c
+++ b/src/backend/storage/aio/read_stream.c
@@ -666,6 +666,8 @@ read_stream_next_buffer(ReadStream *stream, void **per_buffer_data)
 										READ_BUFFERS_ISSUE_ADVICE : 0)))
 			{
 				/* Fast return. */
+				if (per_buffer_data)
+					*per_buffer_data = get_per_buffer_data(stream, oldest_buffer_index);
 				return buffer;
 			}
 
@@ -682,9 +684,14 @@ read_stream_next_buffer(ReadStream *stream, void **per_buffer_data)
 			stream->distance = 0;
 			stream->oldest_buffer_index = stream->next_buffer_index;
 			stream->pinned_buffers = 0;
+			oldest_buffer_index = stream->next_buffer_index;
 		}
 
 		stream->fast_path = false;
+
+		if (per_buffer_data)
+			*per_buffer_data = get_per_buffer_data(stream, oldest_buffer_index);
+
 		return buffer;
 	}
 #endif