diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c index fe5acacbf5e..12845f5593d 100644 --- a/src/backend/storage/lmgr/lmgr.c +++ b/src/backend/storage/lmgr/lmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.58 2003/08/04 02:40:03 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.59 2003/08/17 22:41:12 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -76,8 +76,10 @@ InitLockTable(int maxBackends) { int lockmethod; + /* number of lock modes is lengthof()-1 because of dummy zero */ lockmethod = LockMethodTableInit("LockTable", - LockConflicts, MAX_LOCKMODES - 1, + LockConflicts, + lengthof(LockConflicts) - 1, maxBackends); LockTableId = lockmethod; diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index d552028b374..8650931e2be 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.126 2003/08/04 02:40:03 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.127 2003/08/17 22:41:12 tgl Exp $ * * NOTES * Outside modules can create a lock table and acquire/release @@ -212,8 +212,8 @@ LockMethodInit(LOCKMETHODTABLE *lockMethodTable, int i; lockMethodTable->numLockModes = numModes; - numModes++; - for (i = 0; i < numModes; i++, conflictsP++) + /* copies useless zero element as well as the N lockmodes */ + for (i = 0; i <= numModes; i++, conflictsP++) lockMethodTable->conflictTab[i] = *conflictsP; } @@ -241,11 +241,8 @@ LockMethodTableInit(char *tabName, max_table_size; if (numModes >= MAX_LOCKMODES) - { - elog(WARNING, "too many lock types %d (limit is %d)", - numModes, MAX_LOCKMODES); - return INVALID_LOCKMETHOD; - } + elog(ERROR, "too many lock types %d (limit is %d)", + numModes, MAX_LOCKMODES-1); /* Compute init/max size to request for lock hashtables */ max_table_size = NLOCKENTS(maxBackends);