From 5de72c94ab4544b427d9ef7dedcd0c3fa8b0fb9b Mon Sep 17 00:00:00 2001
From: Andrei Kortunov <andrei.kortunov@yandex.ru>
Date: Fri, 16 Apr 2021 08:10:31 +0400
Subject: [PATCH] Limit pointers cache size to avoid possible bad_alloc errors

---
 apps/openmw/mwworld/cells.cpp                    | 2 +-
 docs/source/reference/modding/settings/cells.rst | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/apps/openmw/mwworld/cells.cpp b/apps/openmw/mwworld/cells.cpp
index 40ad62a40..ad4dfcfb9 100644
--- a/apps/openmw/mwworld/cells.cpp
+++ b/apps/openmw/mwworld/cells.cpp
@@ -134,7 +134,7 @@ MWWorld::Cells::Cells (const MWWorld::ESMStore& store, std::vector<ESM::ESMReade
 : mStore (store), mReader (reader),
   mIdCacheIndex (0)
 {
-    int cacheSize = std::max(Settings::Manager::getInt("pointers cache size", "Cells"), 0);
+    int cacheSize = std::clamp(Settings::Manager::getInt("pointers cache size", "Cells"), 40, 1000);
     mIdCache = IdCache(cacheSize, std::pair<std::string, CellStore *> ("", (CellStore*)nullptr));
 }
 
diff --git a/docs/source/reference/modding/settings/cells.rst b/docs/source/reference/modding/settings/cells.rst
index 620b545ac..ab707faf8 100644
--- a/docs/source/reference/modding/settings/cells.rst
+++ b/docs/source/reference/modding/settings/cells.rst
@@ -175,7 +175,7 @@ pointers cache size
 -------------------
 
 :Type:		integer
-:Range:		>0
+:Range:		40 to 1000
 :Default:	40
 
 The count of object pointers that will be saved for a faster search by object ID.