Index: src/backend/access/nbtree/nbtutils.c
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/backend/access/nbtree/nbtutils.c,v
retrieving revision 1.79
diff -c -r1.79 nbtutils.c
*** src/backend/access/nbtree/nbtutils.c	4 Oct 2006 00:29:49 -0000	1.79
--- src/backend/access/nbtree/nbtutils.c	30 Mar 2007 07:55:36 -0000
***************
*** 998,1016 ****
--- 998,1023 ----
  		vac = &btvacinfo->vacuums[i];
  		if (vac->relid.relId == rel->rd_lockInfo.lockRelId.relId &&
  			vac->relid.dbId == rel->rd_lockInfo.lockRelId.dbId)
+ 		{
+ 			LWLockRelease(BtreeVacuumLock);
  			elog(ERROR, "multiple active vacuums for index \"%s\"",
  				 RelationGetRelationName(rel));
+ 		}
  	}
  
  	/* OK, add an entry */
  	if (btvacinfo->num_vacuums >= btvacinfo->max_vacuums)
+ 	{
+ 		LWLockRelease(BtreeVacuumLock);
  		elog(ERROR, "out of btvacinfo slots");
+ 	}
  	vac = &btvacinfo->vacuums[btvacinfo->num_vacuums];
  	vac->relid = rel->rd_lockInfo.lockRelId;
  	vac->cycleid = result;
  	btvacinfo->num_vacuums++;
  
  	LWLockRelease(BtreeVacuumLock);
+ 
  	return result;
  }
  
