diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index de2b406f87cf0d6c57885fa63d39b7f840cff762..01818e99fa713a82afaffa6faee60907a10d3bb9 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.76 2000/06/28 03:32:07 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.77 2000/07/31 01:16:24 inoue Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -47,7 +47,7 @@
  *		This is so that we can support more backends. (system-wide semaphore
  *		sets run out pretty fast.)				  -ay 4/95
  *
- * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.76 2000/06/28 03:32:07 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.77 2000/07/31 01:16:24 inoue Exp $
  */
 #include <sys/time.h>
 #include <unistd.h>
@@ -322,18 +322,20 @@ GetOffWaitqueue(PROC *proc)
 	if (proc->links.next != INVALID_OFFSET)
 	{
 		int			lockmode = proc->token;
+		LOCK	*waitLock = proc->waitLock;
 
-		Assert(proc->waitLock->waitProcs.size > 0);
+		Assert(waitLock);
+		Assert(waitLock->waitProcs.size > 0);
 		SHMQueueDelete(&(proc->links));
-		--proc->waitLock->waitProcs.size;
-		Assert(proc->waitLock->nHolding > 0);
-		Assert(proc->waitLock->nHolding > proc->waitLock->nActive);
-		--proc->waitLock->nHolding;
-		Assert(proc->waitLock->holders[lockmode] > 0);
-		--proc->waitLock->holders[lockmode];
-		if (proc->waitLock->activeHolders[lockmode] ==
-			proc->waitLock->holders[lockmode])
-			proc->waitLock->waitMask &= ~(1 << lockmode);
+		--waitLock->waitProcs.size;
+		Assert(waitLock->nHolding > 0);
+		Assert(waitLock->nHolding > proc->waitLock->nActive);
+		--waitLock->nHolding;
+		Assert(waitLock->holders[lockmode] > 0);
+		--waitLock->holders[lockmode];
+		if (waitLock->activeHolders[lockmode] == waitLock->holders[lockmode])
+			waitLock->waitMask &= ~(1 << lockmode);
+		ProcLockWakeup(&(waitLock->waitProcs), LOCK_LOCKMETHOD(*waitLock), waitLock);
 		getoffed = true;
 	}
 	SHMQueueElemInit(&(proc->links));