diff --git a/src/backend/executor/nodeGatherMerge.c b/src/backend/executor/nodeGatherMerge.c
index 72f30ab..f4613f7 100644
--- a/src/backend/executor/nodeGatherMerge.c
+++ b/src/backend/executor/nodeGatherMerge.c
@@ -369,7 +369,7 @@ gather_merge_init(GatherMergeState *gm_state)
 	gm_state->gm_tuple_buffers =
 		(GMReaderTupleBuffer *) palloc0(sizeof(GMReaderTupleBuffer) *
 										(gm_state->nreaders + 1));
-	for (i = 0; i < gm_state->nreaders; i++)
+	for (i = 0; i < gm_state->nreaders + 1; i++)
 	{
 		/* Allocate the tuple array with MAX_TUPLE_STORE size */
 		gm_state->gm_tuple_buffers[i].tuple =
@@ -412,7 +412,7 @@ reread:
 	}
 	initialize = false;
 
-	for (i = 0; i < nreaders; i++)
+	for (i = 0; i < nreaders + 1; i++)
 		if (!gm_state->gm_tuple_buffers[i].done &&
 			(TupIsNull(gm_state->gm_slots[i]) ||
 			 gm_state->gm_slots[i]->tts_isempty))
@@ -431,7 +431,7 @@ gather_merge_clear_slots(GatherMergeState *gm_state)
 {
 	int			i;
 
-	for (i = 0; i < gm_state->nreaders; i++)
+	for (i = 0; i < gm_state->nreaders + 1; i++)
 	{
 		pfree(gm_state->gm_tuple_buffers[i].tuple);
 		gm_state->gm_slots[i] = ExecClearTuple(gm_state->gm_slots[i]);
