Hopefully fix issue with db corruption (bad data size) (#199)

This commit is contained in:
Lee *!* Clagett
2025-11-13 11:12:18 -05:00
committed by Lee *!* Clagett
parent 151d3092a7
commit 26a882965f

View File

@@ -2975,6 +2975,7 @@ namespace db
auto old_dict = subaddress_ranges.get_value(value);
if (!old_dict)
return old_dict.error();
mdb_cursor_del(ranges_cur.get(), 0); // updated at end
auto& old_range = old_dict->second.get_container();
const auto& new_range = major_entry.second.get_container();
@@ -3043,7 +3044,9 @@ namespace db
value = lmdb::to_val(new_value);
MONERO_LMDB_CHECK(mdb_cursor_put(indexes_cur.get(), &key, &value, 0));
const int err = mdb_cursor_put(indexes_cur.get(), &key, &value, MDB_NODUPDATA);
if (err && err != MDB_KEYEXIST)
return {lmdb::error(err)};
}
}
@@ -3052,7 +3055,7 @@ namespace db
if (!value_bytes)
return value_bytes.error();
value = MDB_val{value_bytes->size(), const_cast<void*>(static_cast<const void*>(value_bytes->data()))};
MONERO_LMDB_CHECK(mdb_cursor_put(ranges_cur.get(), &key, &value, 0));
MONERO_LMDB_CHECK(mdb_cursor_put(ranges_cur.get(), &key, &value, MDB_NODUPDATA));
}
return {std::move(out)};