diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index aed70ee4bcabb07a5fc326bced54f0d745fe474e..d2b07d484ac66f1034fe514df1ee5b7b12a71661 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.104 2003/09/16 00:50:09 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.105 2003/09/23 15:11:33 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1270,7 +1270,8 @@ _SPI_cursor_operation(Portal portal, bool forward, int count,
 		elog(ERROR, "invalid portal in SPI cursor operation");
 
 	/* Push the SPI stack */
-	_SPI_begin_call(true);
+	if (_SPI_begin_call(true) < 0)
+		elog(ERROR, "SPI cursor operation called while not connected");
 
 	/* Reset the SPI result */
 	SPI_processed = 0;
@@ -1320,8 +1321,7 @@ _SPI_procmem()
 }
 
 /*
- * _SPI_begin_call
- *
+ * _SPI_begin_call: begin a SPI operation within a connected procedure
  */
 static int
 _SPI_begin_call(bool execmem)
@@ -1338,6 +1338,11 @@ _SPI_begin_call(bool execmem)
 	return 0;
 }
 
+/*
+ * _SPI_end_call: end a SPI operation within a connected procedure
+ *
+ * Note: this currently has no failure return cases, so callers don't check
+ */
 static int
 _SPI_end_call(bool procmem)
 {