summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_builder.h1
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_entry_base.h12
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;
+ }
};
}