diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index ca0bdde7364d019f6c6308ed9a9c08324be0b50e..b55214e0bc5ce7885ad4262172a632fe37c0bb24 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -55,7 +55,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.73 2008/03/14 17:25:58 alvherre Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.74 2008/03/14 23:49:28 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2602,17 +2602,12 @@ autovacuum_do_vac_analyze(Oid relid, bool dovacuum, bool doanalyze,
 						  BufferAccessStrategy bstrategy)
 {
 	VacuumStmt	vacstmt;
+	List	   *relids;
 	MemoryContext old_cxt;
 
+	/* Set up command parameters --- use a local variable instead of palloc */
 	MemSet(&vacstmt, 0, sizeof(vacstmt));
 
-	/*
-	 * The list must survive transaction boundaries, so make sure we create it
-	 * in a long-lived context
-	 */
-	old_cxt = MemoryContextSwitchTo(AutovacMemCxt);
-
-	/* Set up command parameters */
 	vacstmt.type = T_VacuumStmt;
 	vacstmt.vacuum = dovacuum;
 	vacstmt.full = false;
@@ -2622,11 +2617,18 @@ autovacuum_do_vac_analyze(Oid relid, bool dovacuum, bool doanalyze,
 	vacstmt.relation = NULL;	/* not used since we pass a relids list */
 	vacstmt.va_cols = NIL;
 
+	/*
+	 * The list must survive transaction boundaries, so make sure we create it
+	 * in a long-lived context
+	 */
+	old_cxt = MemoryContextSwitchTo(AutovacMemCxt);
+	relids = list_make1_oid(relid);
+	MemoryContextSwitchTo(old_cxt);
+
 	/* Let pgstat know what we're doing */
 	autovac_report_activity(&vacstmt, relid);
 
-	vacuum(&vacstmt, list_make1_oid(relid), bstrategy, for_wraparound, true);
-	MemoryContextSwitchTo(old_cxt);
+	vacuum(&vacstmt, relids, bstrategy, for_wraparound, true);
 }
 
 /*