aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zencore/iobuffer.cpp9
-rw-r--r--zenserver/cache/structuredcache.cpp2
2 files changed, 7 insertions, 4 deletions
diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp
index c069aa0f1..46b9ab336 100644
--- a/zencore/iobuffer.cpp
+++ b/zencore/iobuffer.cpp
@@ -226,14 +226,17 @@ IoBufferExtendedCore::~IoBufferExtendedCore()
m_DataPtr = nullptr;
}
-static RwLock g_MappingLock[0x40];
+static constexpr size_t MappingLockCount = 64;
+static_assert(IsPow2(MappingLockCount), "MappingLockCount must be power of two");
+
+static RwLock g_MappingLocks[MappingLockCount];
static RwLock&
MappingLockForInstance(const IoBufferExtendedCore* instance)
{
intptr_t base = (intptr_t)instance;
- size_t lock_index = ((base >> 8) ^ (base >> 16)) & 0x3f;
- return g_MappingLock[lock_index];
+ size_t lock_index = ((base >> 8) ^ (base >> 16)) & (MappingLockCount - 1u);
+ return g_MappingLocks[lock_index];
}
void
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index 8daf08bff..e1d9de976 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -1527,7 +1527,7 @@ HttpStructuredCacheService::HandleRpcGetCacheValues(zen::HttpServerRequest& Http
for (size_t Index : RemoteRequestIndexes)
{
RequestData& Request = Requests[Index];
- RequestedRecordsData.push_back({Request.Key.Bucket, Request.Key.Hash});
+ RequestedRecordsData.push_back({{Request.Key.Bucket, Request.Key.Hash}});
CacheChunkRequests.push_back(&RequestedRecordsData.back());
}
Stopwatch Timer;