*** a/src/backend/catalog/storage.c
--- b/src/backend/catalog/storage.c
***************
*** 314,321 **** smgrDoPendingDeletes(bool isCommit)
  	PendingRelDelete *next;
  	int			nrels = 0,
  				i = 0,
! 				maxrels = 8;
! 	SMgrRelation *srels = palloc(maxrels * sizeof(SMgrRelation));
  
  	prev = NULL;
  	for (pending = pendingDeletes; pending != NULL; pending = next)
--- 314,321 ----
  	PendingRelDelete *next;
  	int			nrels = 0,
  				i = 0,
! 				maxrels = 0;
! 	SMgrRelation *srels = NULL;
  
  	prev = NULL;
  	for (pending = pendingDeletes; pending != NULL; pending = next)
***************
*** 340,347 **** smgrDoPendingDeletes(bool isCommit)
  
  				srel = smgropen(pending->relnode, pending->backend);
  
! 				/* extend the array if needed (double the size) */
! 				if (maxrels <= nrels)
  				{
  					maxrels *= 2;
  					srels = repalloc(srels, sizeof(SMgrRelation) * maxrels);
--- 340,352 ----
  
  				srel = smgropen(pending->relnode, pending->backend);
  
! 				/* allocate the initial array, or extend it, if needed */
! 				if (maxrels == 0)
! 				{
! 					maxrels = 8;
! 					srels = palloc(sizeof(SMgrRelation) * maxrels );
! 				}
! 				else if (maxrels <= nrels)
  				{
  					maxrels *= 2;
  					srels = repalloc(srels, sizeof(SMgrRelation) * maxrels);
***************
*** 361,370 **** smgrDoPendingDeletes(bool isCommit)
  
  		for (i = 0; i < nrels; i++)
  			smgrclose(srels[i]);
- 	}
- 
- 	pfree(srels);
  
  }
  
  /*
--- 366,374 ----
  
  		for (i = 0; i < nrels; i++)
  			smgrclose(srels[i]);
  
+ 		pfree(srels);
+ 	}
  }
  
  /*
