Index: src/backend/catalog/pg_shdepend.c
===================================================================
RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/catalog/pg_shdepend.c,v
retrieving revision 1.23.2.2
diff -c -p -r1.23.2.2 pg_shdepend.c
*** src/backend/catalog/pg_shdepend.c	29 Apr 2008 19:37:13 -0000	1.23.2.2
--- src/backend/catalog/pg_shdepend.c	9 Jul 2008 14:03:27 -0000
*************** shdepDropOwned(List *roleids, DropBehavi
*** 1107,1115 ****
  {
  	Relation	sdepRel;
  	ListCell   *cell;
- 	ObjectAddresses *deleteobjs;
  
- 	deleteobjs = new_object_addresses();
  
  	/*
  	 * We don't need this strong a lock here, but we'll call routines that
--- 1107,1113 ----
*************** shdepDropOwned(List *roleids, DropBehavi
*** 1128,1133 ****
--- 1126,1134 ----
  		ScanKeyData key[2];
  		SysScanDesc scan;
  		HeapTuple	tuple;
+ 		ObjectAddresses *deleteobjs;
+ 
+ 		deleteobjs = new_object_addresses();
  
  		/* Doesn't work for pinned objects */
  		if (isSharedObjectPinned(AuthIdRelationId, roleid, sdepRel))
*************** shdepDropOwned(List *roleids, DropBehavi
*** 1225,1238 ****
  		}
  
  		systable_endscan(scan);
! 	}
  
! 	/* the dependency mechanism does the actual work */
! 	performMultipleDeletions(deleteobjs, behavior);
  
  	heap_close(sdepRel, RowExclusiveLock);
- 
- 	free_object_addresses(deleteobjs);
  }
  
  /*
--- 1226,1238 ----
  		}
  
  		systable_endscan(scan);
! 		/* the dependency mechanism does the actual work */
! 		performMultipleDeletions(deleteobjs, behavior);
  
! 		free_object_addresses(deleteobjs);
! 	}
  
  	heap_close(sdepRel, RowExclusiveLock);
  }
  
  /*
