diff options
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/datastore/unique_store_builder.h | 1 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/datastore/unique_store_entry_base.h | 12 |
2 files changed, 11 insertions, 2 deletions
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h b/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h index 7f5162d97ff..c0a44855063 100644 --- a/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h +++ b/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h @@ -35,6 +35,7 @@ public: } EntryRef mapEnumValueToEntryRef(uint32_t enumValue) { assert(enumValue < _refs.size()); + assert(_refCounts[enumValue] < std::numeric_limits<uint32_t>::max()); ++_refCounts[enumValue]; return _refs[enumValue]; } diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_entry_base.h b/vespalib/src/vespa/vespalib/datastore/unique_store_entry_base.h index 2b5bff45d79..79ebae9389f 100644 --- a/vespalib/src/vespa/vespalib/datastore/unique_store_entry_base.h +++ b/vespalib/src/vespa/vespalib/datastore/unique_store_entry_base.h @@ -4,6 +4,8 @@ #include <cstring> #include <cstdint> +#include <cassert> +#include <limits> namespace search::datastore { @@ -20,8 +22,14 @@ protected: public: uint32_t get_ref_count() const { return _ref_count; } void set_ref_count(uint32_t ref_count) const { _ref_count = ref_count; } - void inc_ref_count() const { ++_ref_count; } - void dec_ref_count() const { --_ref_count; } + void inc_ref_count() const { + assert(_ref_count < std::numeric_limits<uint32_t>::max()); + ++_ref_count; + } + void dec_ref_count() const { + assert(_ref_count > 0u); + --_ref_count; + } }; } |