diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index afff55c78813d6b77f65da61d7ebd2e4463252a4..56921cfee01ab0651d0e7fc616f7605f5b495a51 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -70,9 +70,10 @@ gistindex_keytest(IndexScanDesc scan,
 	{
 		int		i;
 
+		if (GistPageIsLeaf(page))			/* shouldn't happen */
+			elog(ERROR, "invalid GIST tuple found on leaf page");
 		for (i = 0; i < scan->numberOfOrderBys; i++)
 			so->distances[i] = -get_float8_infinity();
-		*recheck_p = true;		/* probably unnecessary */
 		return true;
 	}
 
@@ -403,6 +404,8 @@ getNextGISTSearchItem(GISTScanOpaque so)
 		{
 			/* Delink item from chain */
 			so->curTreeItem->head = item->next;
+			if (item == so->curTreeItem->lastHeap)
+				so->curTreeItem->lastHeap = NULL;
 			/* Return item; caller is responsible to pfree it */
 			return item;
 		}