diff --git a/apps/openmw/mwphysics/mtphysics.cpp b/apps/openmw/mwphysics/mtphysics.cpp index 5f76548f36..5e6fb4dea5 100644 --- a/apps/openmw/mwphysics/mtphysics.cpp +++ b/apps/openmw/mwphysics/mtphysics.cpp @@ -10,6 +10,7 @@ #include #include +#include #include @@ -305,10 +306,11 @@ namespace MWPhysics { namespace { - int getMaxBulletSupportedThreads() + unsigned getMaxBulletSupportedThreads() { auto broad = std::make_unique(); - return broad->m_rayTestStacks.size(); + assert(BT_MAX_THREAD_COUNT > 0); + return std::min(broad->m_rayTestStacks.size(), BT_MAX_THREAD_COUNT - 1); } LockingPolicy detectLockingPolicy() @@ -330,8 +332,8 @@ namespace MWPhysics case LockingPolicy::ExclusiveLocksOnly: return 1; case LockingPolicy::AllowSharedLocks: - return static_cast(std::clamp( - Settings::Manager::getInt("async num threads", "Physics"), 0, getMaxBulletSupportedThreads())); + return std::clamp( + Settings::Manager::getInt("async num threads", "Physics"), 0, getMaxBulletSupportedThreads()); } throw std::runtime_error("Unsupported LockingPolicy: "