diff --git a/src/Cache.cpp b/src/Cache.cpp index 4213e901..c740cc55 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -46,12 +46,19 @@ static const std::string_view OLM_ACCOUNT_KEY("olm_account"); static const std::string_view CACHE_FORMAT_VERSION_KEY("cache_format_version"); static const std::string_view CURRENT_ONLINE_BACKUP_VERSION("current_online_backup_version"); -constexpr size_t MAX_RESTORED_MESSAGES = 30'000; - -constexpr auto DB_SIZE = 32ULL * 1024ULL * 1024ULL * 1024ULL; // 32 GB constexpr auto MAX_DBS = 32384UL; constexpr auto BATCH_SIZE = 100; +#if Q_PROCESSOR_WORDSIZE >= 5 // 40-bit or more, up to 2^(8*WORDSIZE) words addressable. +constexpr auto DB_SIZE = 32ULL * 1024ULL * 1024ULL * 1024ULL; // 32 GB +constexpr size_t MAX_RESTORED_MESSAGES = 30'000; +#elif Q_PROCESSOR_WORDSIZE == 4 // 32-bit address space limits mmaps +constexpr auto DB_SIZE = 1ULL * 1024ULL * 1024ULL * 1024ULL; // 1 GB +constexpr size_t MAX_RESTORED_MESSAGES = 5'000; +#else +#error Not enough virtual address space for the database on target CPU +#endif + //! Cache databases and their format. //! //! Contains UI information for the joined rooms. (i.e name, topic, avatar url etc).