Index: core3/branches/unstable/MMOCoreORB/src/server/zone/objects/building/BuildingObjectImplementation.cpp =================================================================== diff -u -N -r5889 -r5893 --- core3/branches/unstable/MMOCoreORB/src/server/zone/objects/building/BuildingObjectImplementation.cpp (.../BuildingObjectImplementation.cpp) (revision 5889) +++ core3/branches/unstable/MMOCoreORB/src/server/zone/objects/building/BuildingObjectImplementation.cpp (.../BuildingObjectImplementation.cpp) (revision 5893) @@ -597,6 +597,8 @@ addTemplateSkillMods(player); + Locker acessLock(&paidAccessListMutex); + if (accessFee > 0 && !isOnEntryList(player)) { //thread safety issues! if (paidAccessList.contains(player->getObjectID())) { @@ -853,11 +855,15 @@ else error("Unable to pay access fee credits to owner"); + Locker acessLock(&paidAccessListMutex); + if(paidAccessList.contains(player->getObjectID())) paidAccessList.drop(player->getObjectID()); paidAccessList.put(player->getObjectID(), time(0) + (accessDuration * 60)); + acessLock.release(); + if(getOwnerCreatureObject() != NULL && getOwnerCreatureObject()->isPlayerCreature()) getOwnerCreatureObject()->getPlayerObject()->addExperience("merchant", 50, true); @@ -888,6 +894,8 @@ Vector ejectList; uint32 nextExpirationTime = 0; + Locker acessLock(&paidAccessListMutex); + for(int i = 0; i < paidAccessList.size(); ++i) { uint32 expirationTime = paidAccessList.elementAt(i).getValue(); if(expirationTime <= time(0)) {